Страница 1 из 1

полигон с отверстиями MIF отображается неправильно

Добавлено: 06 апр 2017, 18:42
АлексЮстасу
Полигоны с отверстиями MIF отображаются в QGIS без отверстий. Точнее, границы отверстий видны, но полигон один цельный.
Полигон после импорта в TAB Mapinfo:
MI_hole.png
MI_hole.png (20.56 КБ) 14597 просмотров
Полигон MIF в Global Mapper:
GM_hole.png
GM_hole.png (15.49 КБ) 14597 просмотров
Полигон MIF в QGIS:
QGIS_hole_1.png
QGIS_hole_1.png (50.32 КБ) 14594 просмотра

Re: полигон с отверстиями MIF отображается неправильно

Добавлено: 06 апр 2017, 18:55
Denis Rykov
Может дело в направлении обхода "дырок"?

Re: полигон с отверстиями MIF отображается неправильно

Добавлено: 06 апр 2017, 19:44
АлексЮстасу
Направление обхода, серьезно, может влиять?! Это же, вроде бы, атавизм?

Нда... Влияет... Я правильно понял, что обязательно обход внешнего контура нужно сделать по часовой, а внутренних - против часовой?

Re: полигон с отверстиями MIF отображается неправильно

Добавлено: 06 апр 2017, 19:50
Игорь Белов
На самом деле не зависит. Невозможно сказать, в каких случаях будет дырка, а в каких заплатка. Просто сохраните в шейп.

Re: полигон с отверстиями MIF отображается неправильно

Добавлено: 07 апр 2017, 02:09
АлексЮстасу
Даже не смешно как-то - вроде бы несложное дело.
Сохранять в шейп - еще одно действие, которое в моем случае не спасет.

Re: полигон с отверстиями MIF отображается неправильно

Добавлено: 07 апр 2017, 05:07
gamm
я подобное уже видел, когда в геометрии была лажа. Чтобы не гадать по картинкам, выложите сам файл.

Re: полигон с отверстиями MIF отображается неправильно

Добавлено: 07 апр 2017, 17:52
АлексЮстасу
Да, MIF делаются программно, и что-то могли накосячить.
Я хотел прикрепить сразу, но исчерпал лимит прикрепляемого.

Re: полигон с отверстиями MIF отображается неправильно

Добавлено: 07 апр 2017, 22:07
Игорь Белов
Denis Rykov писал(а):Может дело в направлении обхода "дырок"?
Верно, к MIF у QGIS особое отношение. Наблюдения:
  1. Если внешний контур обходится по часовой стрелке, QGIS не рисует дырки внутри сонаправленных внутренних контуров и рисует внутри противонаправленных.
  2. Если внешний контур обходится против часовой стрелки, QGIS независимо от направления обхода внутренних контуров рисует дырки, как миленький.
Между тем весь день сегодня (Луна во второй четверти, Юпитер в Деве) MapInfo в разных экспериментах создаёт полигоны с направлением обхода всех внешних и внутренних контуров по часовой стрелке.

Re: полигон с отверстиями MIF отображается неправильно

Добавлено: 08 апр 2017, 02:05
АлексЮстасу
п. 2 у меня не выполняется...

Видимо, авторы специально внесли нечто непредсказуемое, чтобы совершенство QGIS не казалось вызовом совершенству Божественного промысла. :)

Re: полигон с отверстиями MIF отображается неправильно

Добавлено: 08 апр 2017, 04:50
Denis Rykov
А это очень старый баг QGIS, похоже, #8056.

Re: полигон с отверстиями MIF отображается неправильно

Добавлено: 08 апр 2017, 05:42
gamm
АлексЮстасу писал(а):п. 2 у меня не выполняется...
у вас там еще и часть колец не замкнуты (последняя точка не повторяет первую). Но вообще странно - обычно первым делом при загрузке строят топологию, кто в ком лежит. Это делает, похоже, GDAL, по крайней мере rgdal::readOGR() грузит этот полигон правильно. Интересно, а в NextGIS как дела обстоят. Ниже 0 результат загрузки, см. слот hole в полигонах

Код: Выделить всё

Formal class 'SpatialPolygonsDataFrame' [package "sp"] with 5 slots
  ..@ data       :'data.frame': 1 obs. of  13 variables:
  .. ..$ object_name: Factor w/ 1 level "ApronElement": 1
  .. ..$ stfeat     : Factor w/ 1 level "2000-01-01T00:00:00Z": 1
  .. ..$ endfeat    : Factor w/ 1 level "9999-01-05T00:00:00": 1
  .. ..$ stvalid    : Factor w/ 1 level "2000-01-01T00:00:00Z": 1
  .. ..$ endvalid   : Factor w/ 1 level "9999-01-05T00:00:00": 1
  .. ..$ interp     : Factor w/ 1 level "": 1
  .. ..$ feattype   : Factor w/ 1 level "apron_element": 1
  .. ..$ idnumber   : Factor w/ 1 level "111": 1
  .. ..$ idarpt     : Factor w/ 1 level "UNNT": 1
  .. ..$ vacc       : num 0.5
  .. ..$ hacc       : num 0.5
  .. ..$ vres       : num 0.01
  .. ..$ hres       : num 0.01
  ..@ polygons   :List of 1
  .. ..$ :Formal class 'Polygons' [package "sp"] with 5 slots
  .. .. .. ..@ Polygons :List of 3
  .. .. .. .. ..$ :Formal class 'Polygon' [package "sp"] with 5 slots
  .. .. .. .. .. .. ..@ labpt  : num [1:2] 245.2 98.7
  .. .. .. .. .. .. ..@ area   : num 1.09e-06
  .. .. .. .. .. .. ..@ hole   : logi FALSE
  .. .. .. .. .. .. ..@ ringDir: int 1
  .. .. .. .. .. .. ..@ coords : num [1:9, 1:2] 245 245 245 245 245 ...
  .. .. .. .. ..$ :Formal class 'Polygon' [package "sp"] with 5 slots
  .. .. .. .. .. .. ..@ labpt  : num [1:2] 245.2 98.7
  .. .. .. .. .. .. ..@ area   : num 8.62e-08
  .. .. .. .. .. .. ..@ hole   : logi TRUE
  .. .. .. .. .. .. ..@ ringDir: int -1
  .. .. .. .. .. .. ..@ coords : num [1:5, 1:2] 245 245 245 245 245 ...
  .. .. .. .. ..$ :Formal class 'Polygon' [package "sp"] with 5 slots
  .. .. .. .. .. .. ..@ labpt  : num [1:2] 245.2 98.7
  .. .. .. .. .. .. ..@ area   : num 8.62e-08
  .. .. .. .. .. .. ..@ hole   : logi TRUE
  .. .. .. .. .. .. ..@ ringDir: int -1
  .. .. .. .. .. .. ..@ coords : num [1:5, 1:2] 245 245 245 245 245 ...
  .. .. .. ..@ plotOrder: int [1:3] 1 3 2
  .. .. .. ..@ labpt    : num [1:2] 245.2 98.7
  .. .. .. ..@ ID       : chr "1"
  .. .. .. ..@ area     : num 1.09e-06
  ..@ plotOrder  : int 1
  ..@ bbox       : num [1:2, 1:2] 245.2 98.7 245.2 98.7
  .. ..- attr(*, "dimnames")=List of 2
  .. .. ..$ : chr [1:2] "x" "y"
  .. .. ..$ : chr [1:2] "min" "max"
  ..@ proj4string:Formal class 'CRS' [package "sp"] with 1 slot
  .. .. ..@ projargs: chr NA

Re: полигон с отверстиями MIF отображается неправильно

Добавлено: 08 апр 2017, 21:13
АлексЮстасу
gamm писал(а):у вас там еще и часть колец не замкнуты (последняя точка не повторяет первую). Но вообще странно - обычно первым делом при загрузке строят топологию, кто в ком лежит. Это делает, похоже, GDAL, по крайней мере rgdal::readOGR() грузит этот полигон правильно. Интересно, а в NextGIS как дела обстоят. Ниже 0 результат загрузки, см. слот hole в полигонах
Да, первая точка в этих MIF не повторяется. Но MapInfo же воспринимает такие описания нормально, и внутренние полигоны дает правильно - как отверстия в большом полигоне. Когда я повторял первую точку в конце, то ситуация не менялась.

Re: полигон с отверстиями MIF отображается неправильно

Добавлено: 08 апр 2017, 21:23
gamm
АлексЮстасу писал(а):Но MapInfo же воспринимает такие описания нормально
это просто к слову пришлось, GDAL тоже нормально все грузит, по крайней мере в R (и рисуется правильно). Если у вас есть утилиты GDAL под рукой, попробуйте растеризовать этот вектор - если там будут нормальные дырки (а так скорее всего и будет), то я вообще не понимаю, как QGIS может так нехорошо поступать ... похоже, там какой-то древний кусок, который работает мимо GDAL/OGR: если экспортировать ваш файл через GDAL/OGR в SHAPE, все становится нормально

Re: полигон с отверстиями MIF отображается неправильно

Добавлено: 08 апр 2017, 21:53
Игорь Белов
gamm писал(а):если экспортировать ваш файл через GDAL/OGR в SHAPE, все становится нормально
Более того, всё становится нормально, если в QGIS сохранить копию злополучного файла в SHAPE.

Re: полигон с отверстиями MIF отображается неправильно

Добавлено: 09 апр 2017, 07:41
gamm
Игорь Белов писал(а):Более того, всё становится нормально, если в QGIS сохранить копию злополучного файла в SHAPE.
это тоже GDAL, что и у меня. Сохранение самописной программой, которая не разворачивает направление обхода, не помогает. Честно говоря, я подобное видел только в Панораме, и то давно - остается вопрос, в NextGIS это поправлено (тикет был от них, насколько я понял)?