使用PHP将shp空间数据转换为WKT
我正在尝试将一些形状文件导出到MySQL数据库 我可以使用PHP读取shp features dbf文件,但我希望能够获得循环通过的每一行的WKT空间数据。我曾想过向qgis中的shp文件字段添加一个计算字段(geomToWKT),但不幸的是,dbf文件中字符串字段属性的长度限制为254个字符。如何获得每行对应的wkt使用PHP将shp空间数据转换为WKT,php,shapefile,qgis,dbf,wkt,Php,Shapefile,Qgis,Dbf,Wkt,我正在尝试将一些形状文件导出到MySQL数据库 我可以使用PHP读取shp features dbf文件,但我希望能够获得循环通过的每一行的WKT空间数据。我曾想过向qgis中的shp文件字段添加一个计算字段(geomToWKT),但不幸的是,dbf文件中字符串字段属性的长度限制为254个字符。如何获得每行对应的wkt function process_dbf($dbf_path) { $db = dbase_open($dbf_path, 0); if($db) { $reco
function process_dbf($dbf_path) {
$db = dbase_open($dbf_path, 0);
if($db) {
$record_numbers = dbase_numrecords($db);
for ($i = 1; $i <= $record_numbers; $i++) {
$row = dbase_get_record_with_names($db, $i);
$name= $row['name'];
$name=$row['area'];
$x=$row['x'];
$y=$row['y'];
$notes=$row['notes'];
$owner=$row['owner'];
$id=$row['ID'];
$tel=$row['tel_'];
$wkt=geomToWKT(geometry); //what I am trying to achieve in PHP
}
}
}}
函数进程\u dbf($dbf\u路径){
$db=dbase\u open($dbf\u路径,0);
若有($db){
$record\u number=dbase\u numrecords($db);
对于($i=1;$i好的。终于设法让它工作了
您将需要这个。另外,如果您使用的是Windows,您将需要在PHP5.4上使用它
include 'PHP5-Shape-File-Parser-master/shpParser.php';
function process_shp($shp_location,$dbf_location) {
$parser=new shpParser();
$parser->load($shp_location);
$db = dbase_open($dbf_location, 0);
$data=$parser->getShapeData();
$i=1;
foreach($data as $shprow) {
$datarow=dbase_get_record_with_names($db, $i);
$i++;
//print_r($shprow); for shp geo spatial data (shp)
//print_r($datarow); for shp feature data (dbf)
}
}
process_shp('Jerusalem/BeitHanina/entrances/New_Shapefile-new.shp';
'Jerusalem/BeitHanina/entrances/New_Shapefile-new.dbf'); //for example
我发布这个迟来的答案只是为了服务社区,因为这是在寻找“将ESRI Shapefile转换为WKT”时弹出的问题之一
我的库可以读取和写入任何ESRI Shapefile,并将其本机从/转换为WKT和GeoJSON
它不需要任何第三方依赖关系,也不需要dBase扩展(在大多数现代PHP环境中不可用),并且它是主动维护的