SHP-мультиполигонный поделить на отдельные wkt-полигоны
-
- Гуру
- Сообщения: 969
- Зарегистрирован: 22 май 2010, 20:20
- Репутация: 154
SHP-мультиполигонный поделить на отдельные wkt-полигоны
Как мультиполигонный shp-файл поделить на отдельные полигоны в wkt-формате?
-
- Гуру
- Сообщения: 5356
- Зарегистрирован: 09 апр 2010, 19:30
- Репутация: 1021
- Ваше звание: просто мимо прохожу
- Откуда: Ё-бург
Re: SHP-мультиполигонный поделить на отдельные wkt-полигоны
Последний раз редактировалось trir 02 июн 2015, 18:14, всего редактировалось 1 раз.
-
- Гуру
- Сообщения: 969
- Зарегистрирован: 22 май 2010, 20:20
- Репутация: 154
Re: SHP-мультиполигонный поделить на отдельные wkt-полигоны
OGR-SQL?trir писал(а):SQL'ем⎯ GeometryN(N: integer): Geometry - возвращает N-й элемент коллекции.
-
- Гуру
- Сообщения: 969
- Зарегистрирован: 22 май 2010, 20:20
- Репутация: 154
Re: SHP-мультиполигонный поделить на отдельные wkt-полигоны
нашёл такое:nickleb писал(а):OGR-SQL?trir писал(а):SQL'ем⎯ GeometryN(N: integer): Geometry - возвращает N-й элемент коллекции.
gis.stackexchange.com/questions/88272/ogrinfo-sql-example
-
- Гуру
- Сообщения: 4170
- Зарегистрирован: 15 окт 2010, 08:33
- Репутация: 1107
- Ваше звание: программист
- Откуда: Казань
Re: SHP-мультиполигонный поделить на отдельные wkt-полигоны
Мой совет обычен - загрузить в R через rgdal, получите список. Если дырок нет, то просто идете по списку и пишете тем же rgdal-ом. Если дырки и прочие осложнения есть, то придётся восстанавливать топологию.
[ Сообщение с мобильного устройства ]
[ Сообщение с мобильного устройства ]
-
- Гуру
- Сообщения: 969
- Зарегистрирован: 22 май 2010, 20:20
- Репутация: 154
Re: SHP-мультиполигонный поделить на отдельные wkt-полигоны
да, gamm, спасибо... что в Python'е, что в R - оgr.. попробую...gamm писал(а):Мой совет обычен - загрузить в R через rgdal, получите список. Если дырок нет, то просто идете по списку и пишете тем же rgdal-ом. Если дырки и прочие осложнения есть, то придётся восстанавливать топологию.
[ Сообщение с мобильного устройства ]
-
- Гуру
- Сообщения: 4231
- Зарегистрирован: 10 апр 2006, 22:34
- Репутация: -344969098
- Откуда: Париж
Re: SHP-мультиполигонный поделить на отдельные wkt-полигоны
А я бы выгрузил в CSV через ogr2ogr с указанием "геометрию сохранить в WKT". Ну, а там уже текстовый файл можно разобрать чем угодно.
-
- Гуру
- Сообщения: 731
- Зарегистрирован: 12 янв 2011, 22:40
- Репутация: 304
- Ваше звание: ∀
Re: SHP-мультиполигонный поделить на отдельные wkt-полигоны
Код: Выделить всё
ogr2ogr -explodecollections output.shp input.shp
-
- Гуру
- Сообщения: 4231
- Зарегистрирован: 10 апр 2006, 22:34
- Репутация: -344969098
- Откуда: Париж
Re: SHP-мультиполигонный поделить на отдельные wkt-полигоны
как то так?Ariki писал(а):man ogr2ogrКод: Выделить всё
ogr2ogr -explodecollections output.shp input.shp
Код: Выделить всё
ogr2ogr -explodecollections -lco GEOMETRY=AS_WKT -lco SEPARATOR=TAB -lco CREATE_CSVT=YES -f CSV output.csv input.shp
-
- Гуру
- Сообщения: 731
- Зарегистрирован: 12 янв 2011, 22:40
- Репутация: 304
- Ваше звание: ∀
Re: SHP-мультиполигонный поделить на отдельные wkt-полигоны
Да, был невнимателен и упустил, что WKT нужен в результате.
-
- Гуру
- Сообщения: 969
- Зарегистрирован: 22 май 2010, 20:20
- Репутация: 154
Re: SHP-мультиполигонный поделить на отдельные wkt-полигоны
Ariki и Boris, спасибо Вам!
-
- Гуру
- Сообщения: 969
- Зарегистрирован: 22 май 2010, 20:20
- Репутация: 154
Re: SHP-мультиполигонный поделить на отдельные wkt-полигоны
С многочисленными ключами утилит ogr2ogr порой можно целый день разбираться. Нашёл ещё свой доморощенный наколенный Python-скриптик, немного его подредактировал. Корявенькиий, конечно, не универсальный, но работает и, м.б., кому еще пригодится. Комментарии написал. Строго очень не судите... Выкладываю...nickleb писал(а):Ariki и Boris, спасибо Вам!
Код: Выделить всё
from osgeo import ogr
import sys, os
#Директорий
dir_work = "G:"+os.sep+"Layers_2015"+os.sep+"_BEREG"+os.sep+"_SHORE"+os.sep
#Имя исходного shape-файла
shp_name = dir_work + "OBREZ_1_GSHHS_H_L1Poly.shp"
#Имя выходного wkt-файла
out_wkt_name = shp_name.replace(".shp",".wkt")
#Открываем исходный shape-файл
layer = ogr.Open(shp_name)
#Ссылка на открытый исходный shape-файл
layer_ref = layer.GetLayer()
#Ссылка на первый feature
feature_ref = layer_ref.GetNextFeature()
#Открываем для записи wkt-файл
out_wkt=open(out_wkt_name,"w")
#необязательный счётчик feature
nr_feature=1
#Цикл по features в исходном shape-файле
while feature_ref is not None:
#получаем ссылку на тип геометрии текущего feature'са
geom = feature_ref.GetGeometryRef()
#well-known-text типа геометрии текущего feature'са
geom_name = geom.GetGeometryName()
#условие по которому будем писать в выходной wkt-файл
if geom_name=="MULTIPOLYGON" or geom_name=="POLYGON":
#пишем строкою в выходной файл
out_wkt.write(str(geom)+ '\n')
#получение ссылки на следующий feature
feature_ref = layer_ref.GetNextFeature()
#увеличиваем на единицу необязательный счётчик feature
nr_feature=nr_feature+1
-
- Гуру
- Сообщения: 969
- Зарегистрирован: 22 май 2010, 20:20
- Репутация: 154
Re: SHP-мультиполигонный поделить на отдельные wkt-полигоны
см. также ссылку по теме:
https://github.com/jlaura/export2wkt
https://github.com/jlaura/export2wkt
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость