Существует ли какой-либо инструмент, позволяющий мне запускать миллионы шейп-файлов участков и упрощать их?
Существует ли какой-либо инструмент, позволяющий мне запускать миллионы шейп-файлов участков и упрощать их?
Ответы:
Вы можете попробовать Shapely - Python API, построенный на основе GEOS . Поскольку и Shapely, и GDAL имеют библиотеки Python, вы можете легко объединить их с данными из разных источников (включая шейп-файлы), а затем упростить и экспортировать по желанию.
Единственным недостатком может быть скорость, если вы выполняете миллионы функций - может быть быстрее использовать GEOS или JTS напрямую.
Смотрите упрощенный метод:
Все точки в упрощенном объекте будут находиться в пределах допуска от исходной геометрии. По умолчанию используется более медленный алгоритм, который сохраняет топологию. Если для топологии сохранения задано значение False, используется гораздо более быстрый алгоритм Дугласа-Пекера.
>>> p = Point(0.0, 0.0)
>>> x = p.buffer(1.0)
>>> x.area
3.1365484905459389
>>> s = x.simplify(0.05, preserve_topology=False)
>>> s.area
3.0614674589207187
Версия 9.0 GDAL / OGR добавила опцию -simplify к команде ogr2ogr . В документации указано, что она сохраняет топологию.
- упрощенный допуск: (начиная с GDAL 1.9.0) допуск на расстояние для упрощения. Этот метод сохранит топологию, в частности, для геометрий многоугольников.
Пример использования:
ogr2ogr outfile.shp infile.shp -simplify 0.000001
Если ваши данные хранятся в PostGIS, попробуйте использовать ST_SimplifyPreserveTopology .
В ogr2ogr есть опция «segmentize», которая, кажется, делает то, что вам нужно: документация GDAL ogr2ogr
С этой страницы:
-segmentize max_dist: (начиная с GDAL 1.6.0) максимальное расстояние между 2 узлами. Используется для создания промежуточных точек пространственного запроса экстентов
GRASS v.generalize
Вдохновлять от Mapshaper, но прямо в местном, посмотрите на https://github.com/migurski/Bloch