Программное преобразование файлов .shp в электронную таблицу Excel

У меня есть файл в формате .shp, и он мне нужен, чтобы программно преобразовать его в электронную таблицу Excel. Я хочу сделать это с помощью PHP или JavaScript.


person Noman bin Rizwan    schedule 27.01.2012    source источник


Ответы (1)


После того, как я использовал небольшую библиотеку PHP ShapeFile, вы можете получить ее на phpclasses.org. Хотя это немного не очень хороший дизайн, он работает.

Вот небольшой пример из моего собственного кода:

require_once 'lib/ShapeFile.inc.php';
$shp = new ShapeFile($filename, array('noparts' => false));
if ($shp->getError() !== '')
  print_r($shp->getError());
else
{
  $records = array();
  while ($record = $shp->getNext())
  {
    $dbf_data = $record->getDbfData();
    $shp_data = $record->getShpData();

    //Dump the information
    $obj = array(
      'type' => $shp->getShpTypeName($record->getShpType())
    );

    $obj['shape'] = $shp_data;
    $obj['meta'] = $dbf_data;

    $records[] = $obj;
  }
}

print_r($records);

Итак, после этого $records содержит все данные из шейп-файла. Конечно, вам потребуется некоторое время, чтобы понять, что такое шейп-файл и какие данные он может содержать (при условии, что вы с ним не знакомы). Начните с википедии. На самом деле есть куча массивов с некоторыми метками.

Затем используйте php excel lib (просто ищите так), и все готово :)

person dmitry    schedule 27.01.2012
comment
Большое спасибо брат! Позвольте мне попробовать это. - person Noman bin Rizwan; 27.01.2012
comment
выдает ошибку: вызов функции-члена assign() для не-объекта - person Noman bin Rizwan; 27.01.2012
comment
конечно, выдается ошибка, потому что у вас нет объекта $view :) Это просто артефакт из существующего кода. Это означает, что переменная должна быть доступна в шаблоне. Код — это просто ссылка. удалите строку с $view->assign и в конце выполните print_r($records). - person dmitry; 27.01.2012
comment
Просто примечание: возникли проблемы с запуском WAMP 2.2.22, PHP 5.4.3 и ShapeFile.inc.php. Начиная с PHP 5.3 php_dbase больше не включается. Здесь у меня есть рабочее расширение... hrazdil.info/blog/ - person Terry; 13.05.2013