Я пытаюсь экспортировать некоторые файлы форм в базу данных MySQL.
Я могу прочитать dbf файл shp features с помощью 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
}
}
}}
ХОРОШО. Наконец-то удалось заставить его работать.
Вам нужно это учебный класс. Кроме того, если вы используете Windows, вам понадобится это расширение базы данных на 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
Других решений пока нет …