在PHP中,如何计算哪个shapefile(郊区)包含给定的lat lon点
我只能访问PHP5(无PostGIS) 我有一堆郊区的形状文件,还有一些带有拉特-隆点的事件。我对形状文件没有任何经验 检查哪些shapefile包含这些lat-long点(仅使用PHP)的最佳方法是什么 我是否将shapefile转换为lat-long多边形并使用标准多边形点交点方程在PHP中,如何计算哪个shapefile(郊区)包含给定的lat lon点,php,shapefile,Php,Shapefile,我只能访问PHP5(无PostGIS) 我有一堆郊区的形状文件,还有一些带有拉特-隆点的事件。我对形状文件没有任何经验 检查哪些shapefile包含这些lat-long点(仅使用PHP)的最佳方法是什么 我是否将shapefile转换为lat-long多边形并使用标准多边形点交点方程 或者这些是用于加载/处理shapefile的很棒的PHP库?要处理shapefile,我建议将它们加载到具有空间关系的数据库中,并使用数据库的空间关系功能 为此,我个人使用PostgreSQL和PostGIS扩展
或者这些是用于加载/处理shapefile的很棒的PHP库?要处理shapefile,我建议将它们加载到具有空间关系的数据库中,并使用数据库的空间关系功能 为此,我个人使用PostgreSQL和PostGIS扩展。它有一个用于将shapefile转换为SQL插入的实用程序。然后,您可以将您的点放入WKT(众所周知的文本)中,并查询数据库中它与哪个形状文件相交 我不相信php本身有任何处理GIS的内置函数
编辑-该死-很抱歉,我在文章之后才看到(无PostGIS)部分。您可以将多边形转换为wkt并使用多边形点交点。要使用形状文件,我建议将它们加载到具有空间关系的数据库中,并使用数据库的空间关系功能 为此,我个人使用PostgreSQL和PostGIS扩展。它有一个用于将shapefile转换为SQL插入的实用程序。然后,您可以将您的点放入WKT(众所周知的文本)中,并查询数据库中它与哪个形状文件相交 我不相信php本身有任何处理GIS的内置函数
编辑-该死-很抱歉,我在文章之后才看到(无PostGIS)部分。您可以将多边形转换为wkt并使用多边形点交点。每个形状文件由3部分组成,shp、shx、dbf。shp文件包含几何图形,shx是帮助访问shp的索引,dbf是普通的旧数据库文件,包含每个记录的数据 可以从shp文件中提取边界框,如下所示:
$handle = fopen("path/to/file.shp","rb");
fseek($handle, 36);
$min_x = unpack("d",fread($handle,8);
$min_y = unpack("d",fread($handle,8);
$max_x = unpack("d",fread($handle,8);
$max_y = unpack("d",fread($handle,8);
// Note, this code will only work on a little-endian machine
// You'll need to do a byte swap on big endian systems
然后可以测试给定事件是否位于shapefile的边界框中
if (($event_x >= $min_x) && ($event_x <= $max_x)
&& ($event_y >= $min_y) && ($event_y <= $max_y))
如果($event\u x>=$min\u x)&($event\u x=$min\u y)&($event\u y每个形状文件由三部分组成,shp、shx、dbf。shp文件包含几何图形,shx是帮助访问shp的索引,dbf是包含每个记录数据的普通旧数据库文件
可以从shp文件中提取边界框,如下所示:
$handle = fopen("path/to/file.shp","rb");
fseek($handle, 36);
$min_x = unpack("d",fread($handle,8);
$min_y = unpack("d",fread($handle,8);
$max_x = unpack("d",fread($handle,8);
$max_y = unpack("d",fread($handle,8);
// Note, this code will only work on a little-endian machine
// You'll need to do a byte swap on big endian systems
然后可以测试给定事件是否位于shapefile的边界框中
if (($event_x >= $min_x) && ($event_x <= $max_x)
&& ($event_y >= $min_y) && ($event_y <= $max_y))
if($event\u x>=$min\u x)&($event\u x=$min\u y)&&($event_y我知道这个问题已经很老了,但作为对社区和未来在本机PHP中寻找类似功能的用户的服务,我想指出,my是一个免费的开源PHP库,可以读取和写入任何ESRI Shapefile,而无需任何第三方依赖
链接到GitHub项目:我知道这个问题已经很老了,但作为对社区和未来用户的服务,我想指出,my是一个免费的开源PHP库,可以读写任何ESRI Shapefile,没有任何第三方依赖
链接到GitHub项目:询问者无法访问PostGIS。询问者无法访问PostGIS。