gpt4 book ai didi

php - 使用 Shapefile 数据确定经度/纬度的邻域

转载 作者:可可西里 更新时间:2023-11-01 13:12:51 26 4
gpt4 key购买 nike

我正在尝试根据 Zillow 免费发布的 Shapefile 数据确定某个位置的邻域。

我对 Shapefile 格式一无所知,在网上查找教程时遇到了一些麻烦——但我基本上想获取纬度/经度对,然后针对 Shapefile 数据运行它以确定相应的邻域).

谁能指出我正确的方向?甚至不确定从哪里开始。

这是我获取 Shapefile 文件的地方:http://www.zillow.com/howto/api/neighborhood-boundaries.htm

最佳答案

这是一个使用 PostGIS 的示例,PostGIS 是 postgresql 的空间扩展。 mysql、oracle、mssql、sqlite 和毫无疑问的其他数据库也存在类似的扩展。 PostGIS must be installed为了这个工作。

首先,您必须将 shapefile 转换为 sql 文件:

fmark@fmark-laptop:~$ shp2pgsql -c Desktop/zillow/ZillowNeighborhoods-AK.shp zillowak > Desktop/zillow/ZillowNeighborhoods-AK.sql
Shapefile type: Polygon
Postgis type: MULTIPOLYGON[2]

然后在数据库(本例中为数据库“gis”)上运行 sql 以将 sql 文件转换为启用空间的表:

fmark@fmark-laptop:~$ psql -d gis -f Desktop/zillow/ZillowNeighborhoods-AK.sql
SET
BEGIN
...
COMMIT

此时您可能想要创建一个空间索引,因为您将要进行空间查询:

fmark@fmark-laptop:~$ psql -d gis
psql (8.4.2)
Type "help" for help.

gis=# CREATE INDEX idx_neighborhoods ON zillowak USING gist(the_geom);
CREATE INDEX
gis-# \q

现在,如果您有纬度/经度(在此示例中为 -149.309W,60.985S),您可以找到它位于哪个街区:fmark@fmark-笔记本电脑:~$ psql -d gis psql (8.4.2) 输入“help”寻求帮助。

gis=# select gid, state, county, city, name, regionid from zillowak WHERE ST_CONTAINS(the_geom, GeomFromText('POINT(-149.309 60.985)', -1));
gid | state | county | city | name | regionid
-----+-------+-----------+-----------+---------------+----------
29 | AK | Anchorage | Anchorage | Turnagain Arm | 275783
(1 row)

gis=# \q
fmark@fmark-laptop:~$

最后这个阶段显然可以通过一个简单的查询从 PHP 完成。

关于php - 使用 Shapefile 数据确定经度/纬度的邻域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1918971/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com