Чи впливає трансформація на нову проекцію, а потім назад, на точність даних?


13

У мене є особливий клас (графства Південна Кароліна, такий досить великий географічний район) в державному літаку SC NAD83. Її потрібно перетворити на другу проекцію (NAD83 UTM 17), потім перетворити назад у вихідну. Я буду використовувати інструмент проекту Esri для цього.

Чи може це подвійне перетворення викликати зміщення координат полігонів і на скільки - сантиметрів, метрів, кілометрів?


Через: роздільну здатність перетворення, відмінності роздільної здатності системи координат, роздільну здатність та толерантність зберігання геометрії. Кожна з цих "змінних" є різною. Тож вам потрібно йти читати документацію для кожного.
GISI

... і якщо ви використовуєте ArcGIS, існує потенційно сотні рівнянь перетворення, перелічених у порядку перетворень найвищої роздільної здатності для просторового домену ваших даних.
GISI

1
Звичайний результат A -> B -> A '- це A ~ = A', але додавання трансформації даних у суміш може насправді зіпсувати речі, якщо ви зробите це неправильно. Багато що залежить від того, як визначаються посилання на координати (і, отже, усічення в одиницях карт кожної системи координат).
Вінс

Відповіді:


19

Я не знаю, який двигун проекції використовує ArcGis, але дуже цікаве питання також для proj.4. Тому я спробую протестувати проекційний двигун proj.4 в середовищі GNU-R. Я використовую кути NAD 83 - UTM 17 та EPSG 26917 і відтворюю його 10000 та 1000000 разів рекурсивно та підраховую різницю до початкових значень.

Ось результати:

Здається, що помилка "перепроектування" знаходиться в сантиметровому діапазоні на 10000 циклів.

"LON/LAT differences after  10000  loops"
           DLON          DLAT
1 -2.441464e-07 -1.341807e-07
2  2.441129e-07 -1.341807e-07
3  1.852679e-07 -1.691737e-08
4 -1.853157e-07 -1.691819e-08

"X/Y differences after  10000  loops"
            DX           DY
1 -0.025169783 -0.014338141
2  0.025166375 -0.014338208
3  0.002419045 -0.002016762
4 -0.002419690 -0.002016889

І зростати до помилки в діапазоні метрів, якщо запустити цикл 1000000 разів.

"LON/LAT differences after  1000000  loops"
           DLON          DLAT
1 -2.441464e-05 -1.341845e-05
2  2.441128e-05 -1.341846e-05
3  1.852621e-05 -1.691837e-06
4 -1.853105e-05 -1.691828e-06

"X/Y differences after  1000000  loops"
          DX         DY
1 -2.5172288 -1.4339977
2  2.5168869 -1.4340064
3  0.2419201 -0.2017070
4 -0.2419859 -0.2017094

Ось сценарій.

# load the package
require('proj4')

# the LON/LAT frame of NAD83 UTM 17 
lon = c(-84.00, -78.00, -84.00, -78.00 ) 
lat = c( 24.00,  24.00,  83.00,  83.00)

# build the projection conform object
ll0 = matrix(c(lon,lat),nrow=4,ncol=2)
xy0 = project(ll0,"+init=epsg:26917",ellps.default='GRS80')

# make a copy
ll1 = ll0
xy1 = xy0

# number of iterations
num = 1000000

# reproject the stuff num times
for(i in 1:num) {
 # project forward  
 xy1 = project(ll1,"+init=epsg:26917", ellps.default='GRS80')
 # project backward
 ll1 = project(xy1,"+init=epsg:26917", inverse=T, ellps.default='GRS80')
}

# build difference table ll
dll = as.data.frame(ll1-ll0)
names(dll) = c('DLON','DLAT')
# print results LON/LAT
print(paste("LON/LAT differences after ", num," loops"))
print(dll)

# build difference table xy
dxy = as.data.frame(xy1-xy0)
names(dxy) = c('DX','DY')
# print results X/Y
print(paste("X/Y differences after ", num," loops"))
print(dxy)

Подальші тести в середовищі статистики повинні бути простими. Сценарії та пояснення коду для середовища Linux доступні на веб- сайті github.com/bigopensky .


Це ще більш ретельно, ніж я сподівався, і дуже обнадійливо. Дякую за тест та за приклад скрипта, який тиражував його моїми власними даними!
Еріка

Чи можете ви включити, що ви маєте на увазі під кутами NAD83 UTM? Якщо вони знаходяться в крайній зоні (наприклад, велика широта), використання точок у США, ймовірно, дасть ще кращі результати.
mkennedy

Я припускаю, що межі WGS84, що постачаються разом з EPSG 26917 за адресою пространстваrereference.org/ref/epsg/nad83-utm-zone- 17n .., WGS84 Bounds: -84.0000, 24.0000, -78.0000, 83.0000є правильним регіоном, що цікавить. Чи помилився я?
huckfinn

@huckfinn Да, я мав би бачити значення в коді! Вибачте за дурне запитання. Великі значення для узагальненої відповіді про UTM.
mkennedy

7

Esri має власний двигун проекції.

Більшість методів проекцій та географічних / даткових перетворень добре поводяться при використанні у відповідній зоні, що цікавить. Якщо ви надто далеко за межами зони UTM, поперечний Меркатор не завжди точно «обертається» (перетворюється на широту-довготу). Прогнози, що використовуються для всього світу, можуть мати деякі проблеми на полюсах або навколо них, або на меридіані +/- 180 або на "анти-меридіані" (меридіан, що знаходиться навпроти центру проектованої системи координат).

Я пробіг 4 бали, які випадають за межами Південної Кароліни через двигун проекції Есрі. Для стресового тесту в 1k або 10k або 1M балів, мені доведеться щось кодувати, оскільки мій існуючий аналогічний тест просто робить "туди-назад" - прогнозовану на географічну до прогнозованої. 32133 - це штатний літак NAD 1983, Південна Кароліна (метри). 26917 - зона NAD 1983 р. UTM 17 Північ.

C:\Users\melita>inverse 32133
382000 20000
      -83.40806392522212        31.98974518135408
382000 383000
      -83.50098893136905        35.26180827475587
839100 20000
      -78.57184097446545        31.98934439195045
839100 383000
      -78.47814111839074        35.26139222680582

C:\Users\melita>forward 26917
  -83.40806392522212        31.98974518135408
       272490.5730967618        3541832.738731374
  -83.50098893136905        35.26180827475587
       272485.6257057797         3904944.98998655
  -78.57184097446545        31.98934439195045
       729409.4734382738        3541830.781689366
  -78.47814111839074        35.26139222680582
       729414.4926270114        3904946.919009762

C:\Users\melita>inverse 26917
 272490.5730967618        3541832.738731374
      -83.40806392522212        31.98974518135408
  272485.6257057797         3904944.98998655
      -83.50098893136905        35.26180827475587
  729409.4734382738        3541830.781689366
      -78.57184097446545        31.98934439195045
  729414.4926270114        3904946.919009762
      -78.47814111839074        35.26139222680582
^Z

C:\Users\melita>forward 32133
  -83.40806392522212        31.98974518135408
                382000.0                  20000.0
  -83.50098893136905        35.26180827475587
                382000.0                 383000.0
  -78.57184097446545        31.98934439195045
                839100.0        19999.99999999814
  -78.47814111839074        35.26139222680582
                839100.0        382999.9999999981

Тож ви бачите, що у нас було два пункти, які повернулися о 10е 09.

Поводження в ArcGIS ускладнюється тим, що існує просторова довідка. Просторова довідка включає систему координат плюс деякі значення зберігання та аналізу. За замовчуванням системи координат, які використовують лічильники, зберігаються з точністю до десятої частини міліметра, 0,0001.

Розкриття: Я працюю на Есрі.


5

Я думаю, що це випадок, коли потрібно протестувати запропонований робочий процес на предмет деяких тестових функцій, до яких легко додати поля координат XY.

Порівняйте значення XY початкових точок з тими, які ви проектували / трансформували (хоча багато разів), і ви оціните різницю.


1
Погодьтеся. Також пам’ятайте, що ArcGIS відображає за замовчуванням 6 десяткових знаків подвійного типу даних у Табличному поданні. Ви можете змінити властивості поля для відображення у таблиці 12 знаків після коми. Географічні значення xy, як правило, становлять 9 знаків після коми, подвійна точність.
klewis
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.