arcpyを使用して、2つのフィーチャクラスが同じ空間参照を持っているかどうかをどのように確認しますか?
2つが等しいかどうかを確認するだけでは機能しません。
>>> import arcpy
>>> fc1 = r"C:\Users\e1b8\Desktop\E1B8\GIS_Stackexchange\data.gdb\test"
>>> sr1 = arcpy.Describe (fc1).spatialReference
>>> sr2 = arcpy.Describe (fc1).spatialReference
>>> sr1 == sr2
False
factoryCode
カスタムプロジェクションにはないため、機能しません。
>>> fc2 = r"C:\Users\e1b8\Desktop\E1B8\GIS_Stackexchange\data.gdb\customproj"
>>> sr2 = arcpy.Describe (fc2).spatialReference
>>> sr2.factoryCode
0
はありますname
が、名前は同じでも、単位が異なっていてもかまいません。
>>> sr1 = arcpy.Describe (fc1).spatialReference
>>> sr2 = arcpy.Describe (fc2).spatialReference
>>> sr1.name
u'NAD_1983_UTM_Zone_10N'
>>> sr2.name
u'NAD_1983_UTM_Zone_10N'
>>> sr1.linearUnitCode
9003
>>> sr2.linearUnitCode
9001
したがって、少し複雑になります。私が思いついた最高のものは:
>>> def CompareSRs (inFc1, inFc2):
sr1 = arcpy.Describe (inFc1).spatialReference
sr2 = arcpy.Describe (inFc2).spatialReference
if not sr1.name != sr2.name:
return False
srType = sr1.type
if srType != sr2.type:
return False
if srType == "Geographic":
return sr1.angularUnitCode == sr2.angularUnitCode
return sr1.linearUnitCode == sr2.linearUnitCode
そして、私はまだ上記のコードが気密であるかどうかわかりません。もっと良い方法はありますか?
exportToString ()
、空間参照のWKTの文字列を返すはチケットかもしれません。