Здравствуйте коллеги!
Тема поднималась неоднократно, но, вероятно, при просмотре поисковых результатов я проглядел верное решение.
Проблема заключается в неверном вычислении площади. Версия QGIS - 3.4.2. 64bit и 2.18.4.
Возьмем самый простой пример - квадрат со стороной в 1 км.
Строим его через импорт csv-слоя -> convex hull. Параметры:
EPSG: 28404 "Pulkovo 1942 / Gauss-Kruger zone 4"
1 4500000 5700000
2 4500000 5701000
3 4501000 5701000
4 4501000 5700000
Что может быть проще? Результат заведомо известен - 1 000 000 м2.
Первые 5 колонок - автоматом выдает Кугис при построении квадрата. И площадь прописана правильно. Но когда считаем через $area калькулятором полей (последняя колонка), то результат значительно различается. Пересчеты же в ARCGIS (остальные колонки) - дают верный результат.
Что сделать, чтобы считать правильно в QGIS?
Спасибо
Неверное вычисление площади полигона в QGIS
- eucrariano
- Активный участник
- Сообщения: 104
- Зарегистрирован: 26 авг 2009, 12:09
- Репутация: 0
- Откуда: Ukraine, Chernivtsy
-
- Гуру
- Сообщения: 5278
- Зарегистрирован: 09 апр 2010, 19:30
- Репутация: 1014
- Ваше звание: просто мимо прохожу
- Откуда: Ё-бург
- eucrariano
- Активный участник
- Сообщения: 104
- Зарегистрирован: 26 авг 2009, 12:09
- Репутация: 0
- Откуда: Ukraine, Chernivtsy
Re: Неверное вычисление площади полигона в QGIS
В продолжение темы.
Тестируются: Quantum GIS 3.4 (основная программа) и Digitals XE, build 23.11.2018 (Demo) + ArcMap 10.5 в качестве сравнения. Причем Digitals - это как бы базис, посчитанное им у нас принимается за эталон и идет напрямую в кадастр. Потому то я так и зациклился с площадями этими...
В этом примере взято 2 участка: квадрат 1000х1000 м и произвольный реальный земельный участок, расположенные в СS63 zone X1 для 2 вариантов параметров проекции:
Мой вариант:
+proj=tmerc +lat_0=0 +lon_0=23.5 +k=1 +x_0=1300000 +y_0=-9214.687903777511 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs
Вариант на основе параметров Digitals:
+proj=tmerc +lat_0=0 +lon_0=23.5 +k=1 +x_0=1300000 +y_0=-9214.688 +ellps=krass +towgs84=25,-141,-78.5,0.0,-0.35,-0.736,0.0 +units=m +no_defs
Оба варианта дали тождественные и описанные ниже результаты.
Использованы три способа измерений в двух вариантах:
V1: Система координат: CS63 X1, для измерения длин и площадей в настройках проекта использована плоскость (Planimetric):
1_1 - функция $area
1_2 - area($geometry)
V2 Система координат: CS63 X1, для измерения длин и площадей в настройках проекта используется эллипсоид Красовского 1942:
2_1 - функция $area
2_2 - area($geometry)
V3: Система координат: Декартовая
3_1 - функция $area
3_2 - area($geometry)
Если же считать площадь по формулам, то тоже взято 3 варианта (результат приведен для реального участка):
1) полные прямоугольные координаты - 10000,32177734 м2;
2) прямоугольные координаты с отброшенным номером зоны -10000,322265625 м2;
3) прямоугольные координаты с отброшенным номером зоны и уменьшенной на 300 тыс. м Y-координатой (или Х-координатой, если использовать терминологию ГИС) 10000,32225037 м2;
Квадрат имеет ровно 1 км2 независимо от способа расчета...
Последний результат (+10000,322250 м2) получается и в ArcGIS.
В то же время Digitals считает 1,0000 га (как и в утвержденном каталоге координат реального земельного участка), что подразумевает совпадение в площади при исчисленнии в гектарах и округлении до 4 знаков после запятой.
Итак, какой способ расчета является наиболее корректным? При принятой точности 4 знака после запятой, для участка размером 1 га годится практически любой из способов, однако неизвестно, не «вылезут» ли при каких-то вариантах вычисления площадей в Quantum ГИС различия с "официально" посчитанными площадями.
Какой способ посоветуете?
Спасибо.
Тестируются: Quantum GIS 3.4 (основная программа) и Digitals XE, build 23.11.2018 (Demo) + ArcMap 10.5 в качестве сравнения. Причем Digitals - это как бы базис, посчитанное им у нас принимается за эталон и идет напрямую в кадастр. Потому то я так и зациклился с площадями этими...
В этом примере взято 2 участка: квадрат 1000х1000 м и произвольный реальный земельный участок, расположенные в СS63 zone X1 для 2 вариантов параметров проекции:
Мой вариант:
+proj=tmerc +lat_0=0 +lon_0=23.5 +k=1 +x_0=1300000 +y_0=-9214.687903777511 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs
Вариант на основе параметров Digitals:
+proj=tmerc +lat_0=0 +lon_0=23.5 +k=1 +x_0=1300000 +y_0=-9214.688 +ellps=krass +towgs84=25,-141,-78.5,0.0,-0.35,-0.736,0.0 +units=m +no_defs
Оба варианта дали тождественные и описанные ниже результаты.
Использованы три способа измерений в двух вариантах:
V1: Система координат: CS63 X1, для измерения длин и площадей в настройках проекта использована плоскость (Planimetric):
1_1 - функция $area
1_2 - area($geometry)
V2 Система координат: CS63 X1, для измерения длин и площадей в настройках проекта используется эллипсоид Красовского 1942:
2_1 - функция $area
2_2 - area($geometry)
V3: Система координат: Декартовая
3_1 - функция $area
3_2 - area($geometry)
Если же считать площадь по формулам, то тоже взято 3 варианта (результат приведен для реального участка):
1) полные прямоугольные координаты - 10000,32177734 м2;
2) прямоугольные координаты с отброшенным номером зоны -10000,322265625 м2;
3) прямоугольные координаты с отброшенным номером зоны и уменьшенной на 300 тыс. м Y-координатой (или Х-координатой, если использовать терминологию ГИС) 10000,32225037 м2;
Квадрат имеет ровно 1 км2 независимо от способа расчета...
Последний результат (+10000,322250 м2) получается и в ArcGIS.
В то же время Digitals считает 1,0000 га (как и в утвержденном каталоге координат реального земельного участка), что подразумевает совпадение в площади при исчисленнии в гектарах и округлении до 4 знаков после запятой.
Итак, какой способ расчета является наиболее корректным? При принятой точности 4 знака после запятой, для участка размером 1 га годится практически любой из способов, однако неизвестно, не «вылезут» ли при каких-то вариантах вычисления площадей в Quantum ГИС различия с "официально" посчитанными площадями.
Какой способ посоветуете?
Спасибо.
- Вложения
-
- results.png (64.11 КБ) 4152 просмотра
-
- kvadrat.png (13.59 КБ) 4163 просмотра
Последний раз редактировалось eucrariano 11 дек 2018, 11:59, всего редактировалось 12 раз.
-
- Гуру
- Сообщения: 4047
- Зарегистрирован: 15 окт 2010, 08:33
- Репутация: 1050
- Ваше звание: программист
- Откуда: Казань
Re: Неверное вычисление площади полигона в QGIS
вам же не корректный нужен, а попадающий в Digitals XE. Поэтому попробуйте посчитать в нем без округления как-то, используя напрямую функции, и т.д., и подобрать.
"Официальные" площади посчитаны тоже с ошибками, вам в них попасть нужно. Сделайте набор участков разного размера, например масштабируя и сдвигая один и тот же по вашей проекционной зоне, и постройте модель поправок для QGIS, чтобы он попадал. Ничего другого нет, если только не угадать или не узнать способ счета в Digitals XE, и не переписать его в QGIS.
- eucrariano
- Активный участник
- Сообщения: 104
- Зарегистрирован: 26 авг 2009, 12:09
- Репутация: 0
- Откуда: Ukraine, Chernivtsy
Re: Неверное вычисление площади полигона в QGIS
Спасибо за Ваш совет. Тут Вы правы. Я провел небоьшое исследование, чтобы полностью разобраться в теме. В общем, выводы совпадают с Вашими.
Итак, надеюсь эта информация поможет всем, кто задавался подобными вопросами. Проблема, оказывается, намного более обширная, чем мне казалось вначале… И конечно она связана не с какой-либо конкретной ГИС, а как правило, лежит в плоскости требований кадастров…
Во первых, Quantum ГИС считает честно, это факт. В то же время утверждать, что другие программы, в т.ч. Digitals, "мухлюют", тоже нельзя.
Извините, что сейчас больше говорить буду о Digitals, чем о заявленой в заголовке темы QGIS, но проблема привязки вычисленных площадей к результатам полученным в Digitals (который «соответствует» кадастру), просто обязывает так поступить.
Говоря о Digitals, множество параметров округления используются (http://www.geosystema.net/forum/viewtopic.php?p=256#256, http://www.geosystema.net/forum/viewtopic.php?p=256#256, http://www.geosystema.net/forum/viewtop ... f=1&t=1093 ), чтобы «соответствовать» требованиям обменных файлов In4 (2 знака по длине, сантиметровая точность, 4 знака по площади) и xml (3 знака по длине, милиметровая точность, 4 знака по площади) нашего Украинского кадастра, то-есть координаты берутся с дискретной точностью что часто вызывает вопросы с подсчетом площадей.
Мини-исследование показало (http://www.geosystema.net/forum/viewtop ... f=1&t=1093 http://vinmap.net/book/ch12s01s02s02.html http://vinmap.net/book/ch12s01s02.html ), что программа внутри держит координаты с максимальной точностью. А вот вычисление площадей происходит по виртуально округленным координатам, в соответствии с заданными настройками, что сделано для того, чтобы эмулировать площадь в сохраненном In4 или xml (хотя умеет, конечно, считать и очень точно).
В данном примере с участком, его площадь в более точном варианте Digitals составляет 1,0000322250000 га, или 10000,322250 м2, что расставляет точки на i.
Как метко заметил один форумчанин, требования In4 или xml к точности координат и балансу площадей противоречат не только геодезии, но и здравому смыслу. Однако наш Держгеокадастр рулит, так что "маємо те шо маємо". У вас наверное, такая же ситуация, а о идиотских (извините за выражение) совершенно требованиях к секретности координат давайте просто помолчим на даный момент.
Возвращаясь к Quantum: вероятней всего, наиболее универсальным будет подход с использованием варианта V2_2, то есть на основе:
«Система координат (подставляем нужную)», а для измерения длин и площадей в настройках проекта используем «эллипсоид (подставляем нужный)»
Соответственно, для исчисления площади проекции с учетом кривизны Земли используем функцию $area (для длин - $length, для периметров - $perimeter etc)
Для «кадастровых» целей используем варианты с area($geometry), length($geometry), perimeter($geometry) ну и так далее. В зависимости от целей «огрубляем» результат.
Вот, кажется и все по этой теме, которую можно закрывать.
Всем спасибо за советы и участие.
Итак, надеюсь эта информация поможет всем, кто задавался подобными вопросами. Проблема, оказывается, намного более обширная, чем мне казалось вначале… И конечно она связана не с какой-либо конкретной ГИС, а как правило, лежит в плоскости требований кадастров…
Во первых, Quantum ГИС считает честно, это факт. В то же время утверждать, что другие программы, в т.ч. Digitals, "мухлюют", тоже нельзя.
Извините, что сейчас больше говорить буду о Digitals, чем о заявленой в заголовке темы QGIS, но проблема привязки вычисленных площадей к результатам полученным в Digitals (который «соответствует» кадастру), просто обязывает так поступить.
Говоря о Digitals, множество параметров округления используются (http://www.geosystema.net/forum/viewtopic.php?p=256#256, http://www.geosystema.net/forum/viewtopic.php?p=256#256, http://www.geosystema.net/forum/viewtop ... f=1&t=1093 ), чтобы «соответствовать» требованиям обменных файлов In4 (2 знака по длине, сантиметровая точность, 4 знака по площади) и xml (3 знака по длине, милиметровая точность, 4 знака по площади) нашего Украинского кадастра, то-есть координаты берутся с дискретной точностью что часто вызывает вопросы с подсчетом площадей.
Мини-исследование показало (http://www.geosystema.net/forum/viewtop ... f=1&t=1093 http://vinmap.net/book/ch12s01s02s02.html http://vinmap.net/book/ch12s01s02.html ), что программа внутри держит координаты с максимальной точностью. А вот вычисление площадей происходит по виртуально округленным координатам, в соответствии с заданными настройками, что сделано для того, чтобы эмулировать площадь в сохраненном In4 или xml (хотя умеет, конечно, считать и очень точно).
В данном примере с участком, его площадь в более точном варианте Digitals составляет 1,0000322250000 га, или 10000,322250 м2, что расставляет точки на i.
Как метко заметил один форумчанин, требования In4 или xml к точности координат и балансу площадей противоречат не только геодезии, но и здравому смыслу. Однако наш Держгеокадастр рулит, так что "маємо те шо маємо". У вас наверное, такая же ситуация, а о идиотских (извините за выражение) совершенно требованиях к секретности координат давайте просто помолчим на даный момент.
Возвращаясь к Quantum: вероятней всего, наиболее универсальным будет подход с использованием варианта V2_2, то есть на основе:
«Система координат (подставляем нужную)», а для измерения длин и площадей в настройках проекта используем «эллипсоид (подставляем нужный)»
Соответственно, для исчисления площади проекции с учетом кривизны Земли используем функцию $area (для длин - $length, для периметров - $perimeter etc)
Для «кадастровых» целей используем варианты с area($geometry), length($geometry), perimeter($geometry) ну и так далее. В зависимости от целей «огрубляем» результат.
Вот, кажется и все по этой теме, которую можно закрывать.
Всем спасибо за советы и участие.
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 5 гостей