[英]Problems with spatial join
我是sql的新手,並嘗試使用它來加速從包含lat和lon的取點和落點的csv進行的約120萬次行程的空間分析。 我想用簡單的英語做的是:
我正在使用的代碼如下(如果有幫助,NTA或鄰居列表區域是該操作結束時要在表中顯示的鄰居名稱):
--Select all trips that end in project area
SELECT *
INTO end_PA
FROM trips, projarea
WHERE ST_Intersects(trips.dropoff, projarea.geom);
--for trips that end in project area - index by NTA of pick up point
ALTER TABLE end_PA ADD COLUMN GID SERIAL;
CREATE TABLE points_ct_end AS
SELECT nyct2010.ntacode as ct_nta, end_PA.gid as point_id
from nyct2010, end_PA WHERE ST_Intersects(nyct2010.geom , end_PA.pickup);
--Count most common NTA
--return count for each NAT as a csv
copy(
select count(ct_nta) from points_ct_end
group by ct_nta
order by count desc)
to 'C://TaxiData//Analysis//Trips_Arriving_LM.csv' DELIMITER ',' CSV HEADER;
但是,我從一開始就遇到問題-ST_Intersects不會返回感興趣區域內的任何點!
到目前為止我嘗試過的故障排除解決方案:
我首先想到的是這些點不在正確的SRID中。 當我創建“下垂”點時,我將SRID設置為4326。我都嘗試使用ST_SetSRID將兩個數據集的投影更改為4326,並在ArcMap中手動將shapefile重新投影為4326-但均無效。
我從Arc Map中的“行程”數據集中繪制了一個小樣本點,以確保正確投影並與ProjArea shapefile重疊。 他們是。
我將此創建的多點shapefile導入到我的地理數據庫中,以測試該文件是否適用於ST_Intersects。 不。
我嘗試使用ST_Within。 這引發了錯誤消息:
錯誤:函數st_within(字符變化,幾何形狀)不存在
....
提示:沒有函數匹配給定的名稱和參數類型。 您可能需要添加顯式類型轉換。
我正在使用Big SQL和postgres,謝謝!
我首先想到的是這些點不在正確的SRID中。 當我創建“下垂”點時,我將SRID設置為4326。我都嘗試使用ST_SetSRID將兩個數據集的投影更改為4326,並在ArcMap中手動將shapefile重新投影為4326-但均無效。
ST_SetSRID不會更改投影(重新投影)。 它只是更改內部表示。 如果先前的SRID與輸入數據匹配,則這完全可以解決所有問題。 您可能想要ST_Transform()
。
這里沒有足夠的信息來解決此問題。 但是,我們可以回答這個問題...
ERROR: function st_within(character varying, geometry) does not exist
這僅表示第一個參數不是幾何。 當然,我們根本無法執行任何操作,因為我們沒有使用ST_Within()
嘗試過的查詢。
您的ST_Intersects()
語法看起來正確。 但是,根本沒有足夠的信息來提供幫助。 顯示一些架構和示例數據。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.