Розчинити / зібрати багатокутники з ogr2ogr або gpc?


16

У мене є велика кількість багатокутників, що представляють межі графств США, які мені потрібно об'єднати в якомога менше полігонів.

Чи можливо це зробити за допомогою некомерційного програмного забезпечення або програмного забезпечення розумної ціни?

PostGIS недоступний, а також Java, але C є.


OpenSourceSoftware може робити багато речей, що вам потрібно ... інструмент, бібліотека та компілятор C теж працюють у якому середовищі / операційній системі?
huckfinn

завантажити qgis з www.qgis.org
Антоніо Локандро

@huckfinn: Я перебуваю на CentOS, і інструмент командного рядка або бібліотека Perl-XS або C було б ідеально, дякую за запитання. Мої вихідні дані знаходяться в ESRI Shapefiles, хоча у мене є копії полігонів у MySQL. У мене є ogr2ogr, але не діалект MySQL.
LeeGee

Я припускаю, що gpcназва, на яку посилається, - GPC - Бібліотека генерального полігона Clipper з Манчестерського університету
matt wilkie

Відповіді:


31

З ogr2ogr(GDAL> = 1,10 із підтримкою SpatiaLite):

ogr2ogr output.shp input.shp -dialect sqlite -sql "SELECT ST_Union(geometry), dissolve_field FROM input GROUP BY dissolve_field"

1
Чи містить будь-яка з версій Gdal / Ogr для Windows підтримка Spatialite, MS4W, OSGeo4w, gisinternals, geoinformatica?
klewis

AFAIK OSGeo4W та пакети, які підтримує Tamas Szekeres ( vbkto.dyndns.org/sdk ) точно.
Антоніо Фальчіано

1
Яку версію GDAL ви використовуєте ( gdalinfo --version)? Як вирішення, ви можете спробувати спершу створити файл форми, а потім перетворити його в KML, оскільки драйвер KML має деякі обмеження.
Антоніо Фальчіано

3
У мене був чорт того часу, який визначав, що використовувати для "геометрії", отримував помилку немає такої колонки: геометрія . У всіх подібних прикладах, що знаходяться тут у Stack та у довідкових документах, використовуються також неполадки, такі як geo чи the_geom . Нарешті я виявив перемикач -so лише підсумкових даних ogrinfo : ogrinfo -so somedata.gdb my_layer_nameта фільтрував "Геометрія стовпців ="
matt wilkie

3
також, якщо ви просто хочете розчинити всі багатокутники у файлі форм на один великий багатокутник, ви могли б зробити: ogr2ogr output_diss разрешено.shp input.shp -dialect sqlite -sql "SELECT ST_Union (геометрія) ЯК геометрія ВІД", пам'ятайте, якщо ви будуєте GDAL самостійно вам потрібно встановити sqlite і включити принаймні sqlite та просторит у конфігурацію, тобто прапори --with-sqlite --with -paceite = yes або подібні.
см1

3

Якщо ви хочете отримати чистий легкий доступ ваги C, ви можете використовувати combiantion з shapelib від Френка Warmerdam і Гого Алан Мурта. Я вважаю, що обробка DBF у shapelib трохи хитра, але читати щось це нормально. Для perl ви можете їх знайти у сховищі CPAN у розділі Geo :: Shapelib та Math :: Geometry :: GPC . Окрім Geo :: Proj4 для трансформації координат, ви можете мати мінімалістичний доступ до операцій ГІС. Мені це подобається.


Дякую - я це намагався, але здавалося дуже, дуже повільно: за годину було зібрано 2000 округів на MacBookPro 4gig. Можливо, це моє кодування :)
LeeGee

Чи використовуєте ви, наприклад, індексацію, перекриваючи скриньки?
huckfinn

Ні - я спотикаюсь у темряві, мені важко знайти рефлекси, які не припускають, що я роблю це роками, або я керую PostGIS.
LeeGee

Але ви можете використовувати Postgresql / PostGIS також з усіма вдосконаленими індексаціями матеріалів, відношенням ... операцій. Імпорт даних для форми дуже простий за допомогою інструменту shp2pg. А синтаксис SQL вивчити не так складно ...
huckfinn

PostGIS потребував секунд, щоб зрозуміти - дуже просто, особливо з ogr2ogr. Але я вважаю за краще використовувати GPC: я накопичував багатокутники з файлів, кожен раз створюючи UNION, і на те, що PostGIS робив буквально за секунди, потрібні години, і саме тому я кажу, що це моє неправильне прочитання документів .
LeeGee
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.