Как разделить мультигеометрию на составные части (pyQGIS)?
- SS_Rebelious
- Гуру
- Сообщения: 1304
- Зарегистрирован: 24 фев 2009, 16:51
- Репутация: 99
- Ваше звание: GIS pro-fan
- Откуда: Lahti / Газ-ПУТИНбург
- Контактная информация:
Как разделить мультигеометрию на составные части (pyQGIS)?
Использую выражение типа some_line.intersection(some_polygon). В результате в общем случае может получиться несколько вариантов геомтрий, включая multylinestring и возможно даже геометрии, содержащие точки и линии. Я хотел бы разделять мультигеометрии на составные части. Как это сделать?
Последний раз редактировалось SS_Rebelious 14 сен 2012, 12:39, всего редактировалось 1 раз.
Look for something long enough, and you will find it. Look for something without understanding, and it will find you...
"All paid jobs absorb and degrade the mind." Aristotle
If you take 1 step towards freedom it'll take 2 steps towards you!
"All paid jobs absorb and degrade the mind." Aristotle
If you take 1 step towards freedom it'll take 2 steps towards you!
-
- Гуру
- Сообщения: 2627
- Зарегистрирован: 29 мар 2007, 14:12
- Репутация: 34
- Откуда: Ukraine
Re: Как разделить мультигеометрию на составные части (pyQGIS
Использовать методы asMultiPoint(), asMultiPolyline(), asMultiPolygon()
- SS_Rebelious
- Гуру
- Сообщения: 1304
- Зарегистрирован: 24 фев 2009, 16:51
- Репутация: 99
- Ваше звание: GIS pro-fan
- Откуда: Lahti / Газ-ПУТИНбург
- Контактная информация:
Re: Как разделить мультигеометрию на составные части (pyQGIS
Не выходит. Создаю полигон в форме буквы "П" и линию, которая имеет с этим полигоном одну общую вершину и при этом пересекает его. В результате пересечения я по-идее должен получить мультигеометрию, содержащую точку и линию. wkbType() выдаёт 0. Ожидаемо asMultiPolyline() выдаёт [], ибо эта геометрия - не полилиния. Зато работает asPoint(), но при этом выдаёт координаты (0,0), которых в принципе нет... (O_o). Как быть?
Код: Выделить всё
>>> poly = QgsGeometry.fromPolygon([ [ QgsPoint(1,3), QgsPoint(4,3), QgsPoint(4,1), QgsPoint(3,1), QgsPoint(3,2), QgsPoint(2,2), QgsPoint(2,1), QgsPoint(1,1), QgsPoint(1,3) ] ])
>>>line = QgsGeometry.fromPolyline( [ QgsPoint(2,1), QgsPoint(7,2) ] )
>>> i = line.intersection(poly)
>>> i.wkbType()
0
>>> i.asPoint()
(0,0)
>>> line.asPolyline()
[(2,1), (7,2)]
>>> poly.asPolygon()
[[(1,3), (4,3), (4,1), (3,1), (3,2), (2,2), (2,1), (1,1), (1,3)]]
>>> i.asPolyline()
[]
>>> i.asMultiPolyline()
[]
Look for something long enough, and you will find it. Look for something without understanding, and it will find you...
"All paid jobs absorb and degrade the mind." Aristotle
If you take 1 step towards freedom it'll take 2 steps towards you!
"All paid jobs absorb and degrade the mind." Aristotle
If you take 1 step towards freedom it'll take 2 steps towards you!
-
- Гуру
- Сообщения: 2627
- Зарегистрирован: 29 мар 2007, 14:12
- Репутация: 34
- Откуда: Ukraine
Re: Как разделить мультигеометрию на составные части (pyQGIS
Код: Выделить всё
>>>poly = QgsGeometry.fromPolygon([ [ QgsPoint(1,3), QgsPoint(4,3), QgsPoint(4,1), QgsPoint(3,1), QgsPoint(3,2), QgsPoint(2,2), QgsPoint(2,1), QgsPoint(1,1), QgsPoint(1,3) ] ])
>>>line = QgsGeometry.fromPolyline( [ QgsPoint(2,1), QgsPoint(7,2) ] )
>>>i = line.intersection(poly).asGeometryCollection()
>>>i[0].exportToWkt()
POINT(2.000000 1.000000)
>>>i[1].exportToWkt()
LINESTRING(3.000000 1.200000, 4.000000 1.400000)
- SS_Rebelious
- Гуру
- Сообщения: 1304
- Зарегистрирован: 24 фев 2009, 16:51
- Репутация: 99
- Ваше звание: GIS pro-fan
- Откуда: Lahti / Газ-ПУТИНбург
- Контактная информация:
Re: Как разделить мультигеометрию на составные части (pyQGIS
Спасибо!
Look for something long enough, and you will find it. Look for something without understanding, and it will find you...
"All paid jobs absorb and degrade the mind." Aristotle
If you take 1 step towards freedom it'll take 2 steps towards you!
"All paid jobs absorb and degrade the mind." Aristotle
If you take 1 step towards freedom it'll take 2 steps towards you!
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 14 гостей