ArcPyラスタ作成


これの続き
Numpyラスタ-値投入
やっぱりDB直だな。カーソル経由が遅いだけな気がするが。
これくらいの速度は出ると思ったが、Numpy⇒ラスタは少し遅い印象。
速度は累積なのでラスタ化は2.5秒くらい
sql: 0.449000120163
end loop: 0.575000047684
raster: 2.96700000763 ( ちなみにポリゴン化は5秒ちょいくらいだった )

# -*- coding: cp932 -*-

import arcpy
import numpy
import math
import time

TEST_R = r"C:\XXX\TEST_R"

sql_execute = arcpy.ArcSDESQLExecute(r'c:\test.sde')

orgX = 120
orgY = 20

width = 1
height = 1

colX = 30
rowY = 30

start = time.time()

xyarray = sql_execute.execute("SELECT Shape.STX X, Shape.STY Y FROM RND10K")

print "sql:", time.time() - start

# 数量分0埋め配列作って reshapeでXYにする。
npArray = numpy.zeros(colX * rowY, numpy.int32).reshape(rowY, colX)


for xy in xyarray:
    w = math.floor(xy[0] - orgX / width)
    h = math.floor(xy[1] - orgY / height)
    npArray[w][h] += 1
        
print "end loop:", time.time() - start

raster = arcpy.NumPyArrayToRaster(npArray,
                                  arcpy.Point(orgX, orgY),
                                  width, height)

raster.save(TEST_R)
#arcpy.RasterToPolygon_conversion(raster,TEST_R,"NO_SIMPLIFY")

print "raster:", time.time() - start
カテゴリー: 開発 タグ: パーマリンク