Arcpy フィールドの削除について
DeleteFields_management()
の第二引数はフィールドオブジェクトではなく、フィールドの名前を指定する。
フィールドオブジェクトを指定すると、なんか変なRuntimeErrorが返ってくる。
ホームページには引数はフィールドオブジェクトと書いてあるし、なんじゃこりゃ。
http://help.arcgis.com/ja/arcgisdesktop/10.0/help/index.html#//00170000004n000000
まぁ、下のサンプルコードを見れば分かるから、自分の見落としなんだけれども…
リストへの追加:appendとextend
■リストに整数をappendする。
>>> list=[]
>>> list.append(1)
>>> print(list)
[1]
リストが一つ増えた。
■リストに整数をextendする。
>>> list.extend(2)
Traceback (most recent call last):
File "<interactive input>", line 1, in <module>
TypeError: 'int' object is not iterable
ダメみたい。繰り返しできないってどういうことだろうか。
■リストにリストをextendする。
>>> list.extend([2])
>>> print(list)
[1, 2]
リストなら要素が一つでもok
■リストにリストをappendする。
>>> list.append([3])
>>> print(list)
[1, 2, [3]]
リストの中にリストが作られてしまう。
■リストにリストをextendする。
>>> list.extend([4,5,6])
>>> print(list)
[1, 2, [3], 4, 5, 6]
リストが長くなる。
■リストにリストをappendする。
>>> list.append([7,8,9])
>>> print(list)
[1, 2, [3], 4, 5, 6, [7, 8, 9]]
リストの中にリストができる。
変数の適用範囲
変数はどこまで適用されるのか
■関数の外部で定義した変数は、関数内で使用できるのか?
→使用可能。
def function(text):
print(aaa)
print(text)
aaa="HELLO"
function("WORLD")
>>>
HELLO
WORLD
■内部でも同じ変数を定義していた場合はどうなるか?
→内部の変数が優先される。
def function(text):
aaa="See you!"
print(aaa)
print(text)
aaa="HELLO"
function("WORLD")
>>>
See you!
WORLD
■ひょっとして上のコードだと外部の中身も変わってる?
→外部までは影響しない。
def function(text):
aaa="See you!"
print(aaa)
print(text)
aaa="HELLO"
function("WORLD")
print(aaa)
>>>
See you!
WORLD
HELLO
【疑問】空間参照のプロパティを変更する方法がわからない。
どうすればプロパティを変更できるのか?
## #空間参照のプロパティを変更する方法
## #しかし、距離単位が変わらない・・・
## sr.linearUnitName="Meter"
## sr.linearUnitCode=9001
##
## print"*******変更結果********"
## print sr.linearUnitCode
## print sr.linearUnitName
## print sr.exportToString().encode("shift_jis")
## print sr.GCS
## print"***********************"
##
## arcpy.DefineProjection_management(os.path.join(os.path.dirname(outLocation),"temporaryFeatureClass"),sr.exportToString())
プログラム テスト組立の要点
プログラムのテスト仕様を組み立てるうえで、何に注意すればいいのか?
項目立ての注意点
・仕様に沿っているか?
・出力データはどんなデータであって欲しいか?
・入力される可能性のあるデータはどんなデータか?
シナリオを作成する上での注意点
・誰が見てもシナリオを実行できるか?
・シナリオの前提条件は明確にしたか?
・シナリオの実行結果は曖昧な言葉でないか?
距離単位が定義されていない時のXY座標精度
距離単位が定義されていない時のXY座標精度
→投影座標が定義されていないshpをフィーチャクラスに変換した時、単位がメートルであるとしてXY座標精度が扱われる。
例)
Point = arcpy.Point(12.34567,89.01234)を作成
arcpy.Describe(Point).spatialReference.linearUnitCode=0である
arcpy.env.XYResolution = "0.001 Meters"とした上で
arcpy.FeatureClassToFeatureClass_conversion(Point,[Directry],"pointFeature")
するとpointFeatureの(x,y)は(12.346,89.012)となる
おまけ)
・・・なぜか4桁目以下にも数値がつく場合がある。
ex) XY座標精度を小数点3桁までとして変換した後の座標値が(12.346025,89.012025)
しかし、他のレコードすべてに0.000025が足されていたりするため、丸めた後の値が小数点以下3桁きっかりの値ではなく、+0.000025した値のために4桁目以降の値も付いているのかと思われる。
こうなる原因、解決策は分からない。非常に小さい値なので、今のところ放置する。