2014-10-27 4 views
0

Я пытаюсь экспортировать некоторые файлы формы в базу данных MySQL.Преобразование пространственных данных shp в WKT с использованием PHP

Я могу прочитать файл dbf функции shp с помощью PHP, но я хочу иметь возможность получить пространственные данные WKT для каждой строки, которую я прокручиваю. Я думал добавить поле вычислений (geomToWKT) в поля shp-файла в qgis, но, к сожалению, длина атрибутов поля строки в файле dbf ограничена 254 символами. Как я могу получить соответствующий wkt для каждой строки?

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 
    } 
    } 
}} 

ответ

1

OK. Наконец удалось заставить его работать.

Вам понадобится class. Кроме того, если вы используете Windows, вам понадобятся this dbase extension на PHP 5.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