2010-01-26 3 views
13

Есть ли у кого-нибудь опыт обработки (чтения) шейп-файлов ESRI (http://en.wikipedia.org/wiki/Shapefile) из C++?Какую библиотеку C++ для шейпинга ESRI выбрать?

Я нашел не менее 2 библиотек с открытым исходным кодом: библиотека ShapeLib C (http://shapelib.maptools.org/) и OGR (http://www.gdal.org/ogr/). Какая из них лучше? Кто-нибудь использовал один из них? Как насчет опыта?

ответ

8

Я нашел их обоих в порядке, но я бы выбрал библиотеку ShapeLib, поскольку ogr немного тяжелый/странный для своей цели.

Формат шейп-файла очень прост; если вам нужно только получить доступ к определенному/простому набору шейп-файлов, вы можете рассмотреть возможность изобретать колесо и написать код для доступа к ним самостоятельно. Я сделал это во встроенном приложении, и это не заняло больше времени, чем использование этих библиотек.

+0

Решил использовать ShapeLib, большое вам спасибо. В нашем случае нет смысла перестраивать код, который уже был протестирован в широком спектре приложений, используя lib. –

+0

Привет, извините за мои вопросы, просто хотите знать, как сделать шейп-файлы? Я имею в виду рисовать данные карты? любой открытый исходный код может использоваться для этой цели? Спасибо за ваш ответ. С уважением – iXcoder

+0

@Robin, ваш лучший выбор для ответа на этот вопрос - это поиск в Интернете. Следующий лучший вариант - опубликовать это как _раздельный вопрос_ - комментарии не являются подходящим местом для начала новой линии запроса. – Richard

23

OGR Shapefile драйвер от GDAL/OGR напрямую использует реализацию Shapelib, поэтому на самом деле нет никакой разницы. Если вы проверите дерево источников OGR, вы найдете файлы Shapelib, такие как shpopen.c and dbfopen.c.

Также, Frank Warmerdam является автором обоих, Shapelib и OGR, и я могу подтвердить, что Фрэнк поддерживает shpopen.c и dbfopen.c в синхронизации между Shapelib и OGR.

К итогу, нет никакой разницы между Shapelib и OGR относительно реализации спецификации формата Shapefile.