Вопросы по нескольким пакетам сразу, или вопросы, которые непонятно к какой ГИС отнести
-
ginpetr
- Завсегдатай
- Сообщения: 379
- Зарегистрирован: 21 июн 2011, 12:07
- Репутация: 140
- Откуда: Орск
-
Контактная информация:
Сообщение
ginpetr » 08 апр 2021, 09:20
Здравствуйте!
Выгружаю с помощью Mapbasic GML.
Подскажите как правильно указать порядок контуров exterior/interior в элементе <gml:MultiPolygon>, чтобы объект корректно отображался.
В мапинфо объект выглядит так
- в Мапинфо
- Снимок экрана 2021-04-08 111351.jpg (44.54 КБ) 4203 просмотра
GML в QGIS так
- в QGIS
- Снимок экрана 2021-04-08 111429.jpg (26.67 КБ) 4203 просмотра
Код: Выделить всё
<?xml version="1.0" encoding="UTF-8"?>
<gml:FeatureCollection gml:id="795e7d31-adbd-4207-8e4b-ac9c8418ebeb" xmlns="http://fgistp" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<gml:boundedBy>
<gml:Envelope srsName="EPSG:3857">
<gml:lowerCorner>-40075016.69 -20037508.34</gml:lowerCorner>
<gml:upperCorner>40075016.69 20037508.34</gml:upperCorner>
</gml:Envelope>
</gml:boundedBy>
<gml:featureMember>
<Untitled>
<gml:MultiPolygon>
<gml:polygonMember>
<gml:Polygon>
<gml:exterior>
<gml:LinearRing>
<gml:pos> 12613854.0 6819635.96 </gml:pos>
<gml:pos> 12612539.58 6820878.89 </gml:pos>
<gml:pos> 12611953.96 6820901.17 </gml:pos>
<gml:pos> 12610973.28 6819852.01 </gml:pos>
<gml:pos> 12610955.73 6819125.02 </gml:pos>
<gml:pos> 12611227.92 6818915.93 </gml:pos>
<gml:pos> 12611209.93 6818165.53 </gml:pos>
<gml:pos> 12612287.54 6817259.49 </gml:pos>
<gml:pos> 12612366.85 6816837.86 </gml:pos>
<gml:pos> 12612948.26 6816336.42 </gml:pos>
<gml:pos> 12613786.51 6817163.55 </gml:pos>
<gml:pos> 12613854.0 6819635.96 </gml:pos>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:polygonMember>
<gml:polygonMember>
<gml:Polygon>
<gml:interior>
<gml:LinearRing>
<gml:pos> 12613243.81 6819962.23 </gml:pos>
<gml:pos> 12612396.55 6820731.53 </gml:pos>
<gml:pos> 12611286.43 6819667.22 </gml:pos>
<gml:pos> 12611794.42 6818490.74 </gml:pos>
<gml:pos> 12613243.81 6819962.23 </gml:pos>
</gml:LinearRing>
</gml:interior>
</gml:Polygon>
</gml:polygonMember>
<gml:polygonMember>
<gml:Polygon>
<gml:interior>
<gml:LinearRing>
<gml:pos> 12613399.87 6817509.84 </gml:pos>
<gml:pos> 12612519.1 6818535.32 </gml:pos>
<gml:pos> 12611970.23 6817949.06 </gml:pos>
<gml:pos> 12612864.74 6816986.18 </gml:pos>
<gml:pos> 12613399.87 6817509.84 </gml:pos>
</gml:LinearRing>
</gml:interior>
</gml:Polygon>
</gml:polygonMember>
<gml:polygonMember>
<gml:Polygon>
<gml:interior>
<gml:LinearRing>
<gml:pos> 12613500.29 6818178.67 </gml:pos>
<gml:pos> 12613355.34 6819349.06 </gml:pos>
<gml:pos> 12612774.54 6818783.31 </gml:pos>
<gml:pos> 12613500.29 6818178.67 </gml:pos>
</gml:LinearRing>
</gml:interior>
</gml:Polygon>
</gml:polygonMember>
<gml:polygonMember>
<gml:Polygon>
<gml:exterior>
<gml:LinearRing>
<gml:pos> 12613098.86 6817532.12 </gml:pos>
<gml:pos> 12612563.74 6818111.81 </gml:pos>
<gml:pos> 12612421.31 6817855.65 </gml:pos>
<gml:pos> 12612786.72 6817431.92 </gml:pos>
<gml:pos> 12613098.86 6817532.12 </gml:pos>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:polygonMember>
<gml:polygonMember>
<gml:Polygon>
<gml:exterior>
<gml:LinearRing>
<gml:pos> 12612563.74 6819438.23 </gml:pos>
<gml:pos> 12612095.54 6820129.36 </gml:pos>
<gml:pos> 12611532.53 6819589.61 </gml:pos>
<gml:pos> 12611905.95 6818791.76 </gml:pos>
<gml:pos> 12612563.74 6819438.23 </gml:pos>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:polygonMember>
<gml:polygonMember>
<gml:Polygon>
<gml:exterior>
<gml:LinearRing>
<gml:pos> 12612853.6 6820084.76 </gml:pos>
<gml:pos> 12612463.43 6820430.43 </gml:pos>
<gml:pos> 12612257.85 6820209.01 </gml:pos>
<gml:pos> 12612530.24 6819817.24 </gml:pos>
<gml:pos> 12612853.6 6820084.76 </gml:pos>
</gml:LinearRing>
</gml:exterior>
</gml:Polygon>
</gml:polygonMember>
<gml:polygonMember>
<gml:Polygon>
<gml:interior>
<gml:LinearRing>
<gml:pos> 12612407.69 6819471.77 </gml:pos>
<gml:pos> 12612128.93 6819794.94 </gml:pos>
<gml:pos> 12611845.68 6819544.49 </gml:pos>
<gml:pos> 12611995.12 6819170.71 </gml:pos>
<gml:pos> 12612407.69 6819471.77 </gml:pos>
</gml:LinearRing>
</gml:interior>
</gml:Polygon>
</gml:polygonMember>
</gml:MultiPolygon>
<id>0</id>
</Untitled>
</gml:featureMember>
</gml:FeatureCollection>
Мне виделось логичным описать сначала внешний контур, потом вырезать отверстия, потом в них поместить контуры и т.д.
-
Ivor
- Завсегдатай
- Сообщения: 345
- Зарегистрирован: 11 дек 2006, 09:46
- Репутация: 102
- Откуда: Иркутск
Сообщение
Ivor » 08 апр 2021, 09:32
Потому что вы перенакрутили. Достаточно было так:
Код: Выделить всё
<?xml version="1.0" encoding="UTF-8"?>
<gml:FeatureCollection gml:id="795e7d31-adbd-4207-8e4b-ac9c8418ebeb" xmlns="http://fgistp" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<gml:boundedBy>
<gml:Envelope srsName="EPSG:3857">
<gml:lowerCorner>-40075016.69 -20037508.34</gml:lowerCorner>
<gml:upperCorner>40075016.69 20037508.34</gml:upperCorner>
</gml:Envelope>
</gml:boundedBy>
<gml:featureMember>
<Untitled>
<gml:MultiPolygon>
<gml:polygonMember>
<gml:Polygon>
<gml:exterior>
<gml:LinearRing>
<gml:pos> 12613854.0 6819635.96 </gml:pos>
<gml:pos> 12612539.58 6820878.89 </gml:pos>
<gml:pos> 12611953.96 6820901.17 </gml:pos>
<gml:pos> 12610973.28 6819852.01 </gml:pos>
<gml:pos> 12610955.73 6819125.02 </gml:pos>
<gml:pos> 12611227.92 6818915.93 </gml:pos>
<gml:pos> 12611209.93 6818165.53 </gml:pos>
<gml:pos> 12612287.54 6817259.49 </gml:pos>
<gml:pos> 12612366.85 6816837.86 </gml:pos>
<gml:pos> 12612948.26 6816336.42 </gml:pos>
<gml:pos> 12613786.51 6817163.55 </gml:pos>
<gml:pos> 12613854.0 6819635.96 </gml:pos>
</gml:LinearRing>
</gml:exterior>
<gml:interior>
<gml:LinearRing>
<gml:pos> 12613243.81 6819962.23 </gml:pos>
<gml:pos> 12612396.55 6820731.53 </gml:pos>
<gml:pos> 12611286.43 6819667.22 </gml:pos>
<gml:pos> 12611794.42 6818490.74 </gml:pos>
<gml:pos> 12613243.81 6819962.23 </gml:pos>
</gml:LinearRing>
</gml:interior>
<gml:interior>
<gml:LinearRing>
<gml:pos> 12613399.87 6817509.84 </gml:pos>
<gml:pos> 12612519.1 6818535.32 </gml:pos>
<gml:pos> 12611970.23 6817949.06 </gml:pos>
<gml:pos> 12612864.74 6816986.18 </gml:pos>
<gml:pos> 12613399.87 6817509.84 </gml:pos>
</gml:LinearRing>
</gml:interior>
<gml:interior>
<gml:LinearRing>
<gml:pos> 12613500.29 6818178.67 </gml:pos>
<gml:pos> 12613355.34 6819349.06 </gml:pos>
<gml:pos> 12612774.54 6818783.31 </gml:pos>
<gml:pos> 12613500.29 6818178.67 </gml:pos>
</gml:LinearRing>
</gml:interior>
<gml:interior>
<gml:LinearRing>
<gml:pos> 12613098.86 6817532.12 </gml:pos>
<gml:pos> 12612563.74 6818111.81 </gml:pos>
<gml:pos> 12612421.31 6817855.65 </gml:pos>
<gml:pos> 12612786.72 6817431.92 </gml:pos>
<gml:pos> 12613098.86 6817532.12 </gml:pos>
</gml:LinearRing>
</gml:interior>
<gml:interior>
<gml:LinearRing>
<gml:pos> 12612563.74 6819438.23 </gml:pos>
<gml:pos> 12612095.54 6820129.36 </gml:pos>
<gml:pos> 12611532.53 6819589.61 </gml:pos>
<gml:pos> 12611905.95 6818791.76 </gml:pos>
<gml:pos> 12612563.74 6819438.23 </gml:pos>
</gml:LinearRing>
</gml:interior>
<gml:interior>
<gml:LinearRing>
<gml:pos> 12612853.6 6820084.76 </gml:pos>
<gml:pos> 12612463.43 6820430.43 </gml:pos>
<gml:pos> 12612257.85 6820209.01 </gml:pos>
<gml:pos> 12612530.24 6819817.24 </gml:pos>
<gml:pos> 12612853.6 6820084.76 </gml:pos>
</gml:LinearRing>
</gml:interior>
<gml:interior>
<gml:LinearRing>
<gml:pos> 12612407.69 6819471.77 </gml:pos>
<gml:pos> 12612128.93 6819794.94 </gml:pos>
<gml:pos> 12611845.68 6819544.49 </gml:pos>
<gml:pos> 12611995.12 6819170.71 </gml:pos>
<gml:pos> 12612407.69 6819471.77 </gml:pos>
</gml:LinearRing>
</gml:interior>
</gml:Polygon>
</gml:polygonMember>
</gml:MultiPolygon>
<id>0</id>
</Untitled>
</gml:featureMember>
</gml:FeatureCollection>
-
ginpetr
- Завсегдатай
- Сообщения: 379
- Зарегистрирован: 21 июн 2011, 12:07
- Репутация: 140
- Откуда: Орск
-
Контактная информация:
Сообщение
ginpetr » 08 апр 2021, 09:48
ух ты! а зачем тогда элементы polygonMember и Polygon, если не для разделения контуров?
-
Ivor
- Завсегдатай
- Сообщения: 345
- Зарегистрирован: 11 дек 2006, 09:46
- Репутация: 102
- Откуда: Иркутск
Сообщение
Ivor » 08 апр 2021, 10:02
А не знаю. Я с GML вообще не знаком, но обилие отдельных элементов polygon сразу навело на подозрения. Проверил - работает
-
ginpetr
- Завсегдатай
- Сообщения: 379
- Зарегистрирован: 21 июн 2011, 12:07
- Репутация: 140
- Откуда: Орск
-
Контактная информация:
Сообщение
ginpetr » 08 апр 2021, 10:06
а я, кажется, прозрел. Спасибо!
-
corew2020
- Новоприбывший
- Сообщения: 6
- Зарегистрирован: 28 май 2020, 11:44
- Репутация: 0
- Откуда: Ухта
-
Контактная информация:
Сообщение
corew2020 » 09 апр 2021, 12:10
а вот до меня что-то не особо дошло
-
Ivor
- Завсегдатай
- Сообщения: 345
- Зарегистрирован: 11 дек 2006, 09:46
- Репутация: 102
- Откуда: Иркутск
Сообщение
Ivor » 09 апр 2021, 15:09
corew2020, по логике, exterior у полигона может быть один. Всё, что внутри полигона, описывает interior - как дырки, так и острова в дырках. Несколько полигонов и exterior появляются, когда надо описать группу независимых (невложенных) островов.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 36 гостей