首页 文章

空间连接问题

提问于
浏览
0

我是sql的新手,并尝试使用它来加速从一个包含lat和lon的csv的约120万次旅行中的空间分析,用于拾取和下降点 . 我用简单的英语做的是:

  • 选择在感兴趣区域内开始的所有行程(作为shapefile加载到我的数据库中)到一个表中

  • 选择在感兴趣的区域结束的所有旅行到另一个旅行 - 执行这些点之间的空间连接和人口普查轨道的形状文件(包含邻域名称)

  • 按邻居名称计算,列出往返感兴趣区域的最频繁的出发地/目的地 .

我正在使用的代码如下(如果它有用,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中 . 当我创建'dropoff'点时,我将SRID设置为4326.我尝试使用ST_SetSRID将两个数据集的投影更改为4326,并在ArcMap中手动将shapefile重新投影到4326 - 但都没有工作 .

我从Arc Map中的'trip'数据集中绘制了一小部分点,以确保它们正确投影并与ProjArea shapefile重叠 . 他们是 .

我将创建的多点shapefile导入到我的地理数据库中,以测试它是否适用于ST_Intersects . 不 .

我尝试使用ST_Within . 这引发了错误消息:

错误:函数st_within(字符变化,几何)不存在....提示:没有函数匹配给定的名称和参数类型 . 您可能需要添加显式类型转换 .

我正在使用Big SQL和postgres谢谢!!

1 回答

  • 0

    我的第一个想法是积分不在正确的SRID中 . 当我创建'dropoff'点时,我将SRID设置为4326.我尝试使用ST_SetSRID将两个数据集的投影更改为4326,并在ArcMap中手动将shapefile重新投影到4326 - 但都没有工作 .

    ST_SetSRID不会更改投影(重新投影) . 它只是改变了内部表征 . 如果先前的SRID与输入数据匹配,这可以完全搞砸了所有内容 . 你可能想要 ST_Transform() .

    这里没有足够的信息来解决这个问题 . 但是,我们可以回答这个......

    ERROR: function st_within(character varying, geometry) does not exist
    

    这仅仅意味着第一个参数不是几何 . 当然,我们可以_1131924_ t您使用 ST_Within() 尝试过的查询 .

    您对 ST_Intersects() 的语法看起来是正确的 . 但是,根本没有足够的信息来提供帮助 . 显示一些架构和示例数据 .

相关问题