新しい投影に変換してから元に戻すと、データの精度に影響しますか?


13

NAD83 SC State Planeにフィーチャクラス(サウスカロライナ州の郡なので、かなり広い地理的領域)があります。2番目の投影(NAD83 UTM 17)に変換してから、元に戻す必要があります。これを実現するために、Esriのプロジェクトツールを使用します。

この二重変換は、ポリゴン座標の位置を、センチメートル、メートル、キロメートルのどれだけシフトさせることができますか?


理由:変換解像度、座標系の解像度の違い、ジオメトリストレージの解像度と許容値。これらの「変数」はそれぞれ異なります。そのため、それぞれのドキュメントを読む必要があります。
GISI

...また、ArcGISを使用している場合、データの空間ドメインの最高解像度の変換の順に数百の変換方程式がリストされる可能性があります。
GISI

1
A-> B-> A 'の通常の結果はA〜= A'ですが、データム変換をミックスに追加すると、間違えた場合に実際にファウルを引き起こす可能性があります。座標参照がどのように定義されているかに大きく依存します(したがって、各座標系のマップ単位の切り捨て)。
ビンス

回答:


19

ArcGisがどの投影エンジンを使用しているかはわかりませんが、proj.4についても非常に興味深い質問です。そこで、GNU-R環境内でproj.4プロジェクションエンジンをテストしてみます。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

私は、EPSG 26917でspatialreference.org/ref/epsg/nad83-utm-zone-17nで出荷されたWGS84境界WGS84 Bounds: -84.0000, 24.0000, -78.0000, 83.0000が正しい関心領域であると想定してい ます。間違えましたか?
ハックフィン

@huckfinn Duh、コードの値を見たはずです!愚かな質問でごめんなさい。UTMについての一般的な答えに大きな価値があります。
mkennedy

7

Esriには独自の投影エンジンがあります。

ほとんどの投影法および地理的/データム変換メソッドは、適切な関心領域で使用した場合に適切に動作します。UTMゾーンから遠く離れすぎると、横メルカトル図法が常に正確に「逆」(緯度経度に変換)されるとは限りません。全世界で使用される投影には、極または+/- 180子午線または「反子午線」(投影座標参照システムの中心の反対側の子午線)またはその周辺で問題が発生する場合があります。

Esriプロジェクションエンジンを使用して、サウスカロライナ州外の4ポイントを実行しました。1kまたは10kまたは1Mポイントのストレステストの場合、既存の同様のテストは「往復」を行うだけであるため、何かをコーディングする必要があります。32133は、NAD 1983 State Plane South Carolina(メートル)です。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

10e-09に戻った2つのポイントがあることがわかります。

ArcGISでの処理は、空間参照があるという事実により複雑です。空間参照には、座標系に加えていくつかのストレージおよび分析値が含まれます。デフォルトでは、メートルを使用する座標系は10分の1ミリの精度0.0001で保存されます。

開示:私はEsriで働いています。


5

これは、XY座標フィールドを簡単に追加できるいくつかのテストポイント機能に対して提案されたワークフローをテストする必要がある場合だと思います。

初期ポイントのXY値を、投影/変換した値と(何回も)比較すると、差が定量化されます。


1
同意する。また、ArcGISは、デフォルトでテーブルビューにDoubleデータ型の小数点以下6桁を表示します。テーブルビューでフィールドのプロパティを変更して、小数点以下12桁を表示できます。地理xy値は通常、小数点以下9桁程度、倍精度です。
-klewis
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.