首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用PHP将shp空间数据转换为WKT

使用PHP将shp空间数据转换为WKT
EN

Stack Overflow用户
提问于 2014-10-27 16:50:29
回答 2查看 1.3K关注 0票数 0

我正在尝试将一些形状文件导出到MySQL数据库。

我可以使用PHP读取shp特性dbf文件,但我希望能够获得所遍历的每一行的WKT空间数据。我曾考虑在qgis中的shp文件字段中添加一个计算字段(geomToWKT),但不幸的是,dbf文件中字符串字段属性的长度限制为254个字符。如何才能获得每行对应的wkt?

代码语言:javascript
复制
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
  }
  }
}}
EN

回答 2

Stack Overflow用户

发布于 2014-10-28 16:19:10

好的。终于让它工作起来了。

您将需要此class。此外,如果您使用的是Windows,则需要在PHP5.4上安装this dbase extension

代码语言:javascript
复制
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
票数 1
EN

Stack Overflow用户

发布于 2019-08-30 23:40:34

我发布这个延迟的答案只是为了服务于社区,因为这是在寻找“将ESRI Shapefiles转换为WKT”时弹出的问题之一。

我的PHP Shapefile库可以读写任何ESRI Shapefile,并在本地将其从WKTGeoJSON转换为ESRI Shapefile。

它不需要任何第三方依赖项,也不需要dBase扩展(在大多数现代PHP环境中不可用),并且它是主动维护的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26583880

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档