【问题标题】:Problems with spatial join空间连接的问题
【发布时间】:2017-01-12 16:16:38
【问题描述】:

我是 sql 的新手,并试图使用它来加速对来自包含 lat 和 lon 的 csv 的一组约 120 万次行程的空间分析,以获取接送点。 我想用简单的英语做的是:

  • 选择从感兴趣区域开始的所有行程(作为 shapefile 加载到我的数据库中)到一个表中
  • 选择所有在感兴趣区域结束的行程进入另一个 - 在这些点和人口普查轨迹的 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 中的“trips”数据集中绘制了一小部分点样本,以确保它们被正确投影并与 ProjArea shapefile 重叠。他们是。

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

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

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

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

【问题讨论】:

  • 如果你使用 PostGIS,为什么这个标签是 mysql?此外,最好在 GIS.SE 或 DBA.SE 上询问。

标签: postgresql gis postgis


【解决方案1】:

我的第一个想法是这些点不在正确的 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

这仅仅意味着第一个参数不是几何。当然,我们对此无能为力,因为我们没有您使用ST_Within() 尝试过的查询。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-26
    • 2014-07-16
    • 2011-05-12
    • 1970-01-01
    相关资源
    最近更新 更多