Numpyラスタ-値投入


メッシュに含まれるポイントの集計。

要は空間結合のジオプロと同等だが速度確認
[フィッシュネットのメッシュ + ポイント⇒空間結合(SUM)] と同等

ちょい遅いが、カーソルのループか
ラスタ⇒ポリゴンかくらいは確認しとくかな。
本来的にはラスタのままでよいし。

・カーソル自体の速度 :ArcObjectsとの差は?
ってのは確認しとくか。

# -*- coding: cp932 -*-

import arcpy
import numpy
import math
import time

fc = r"C:\XXX.gdb\rnd10k"
TEST_R = r"C:\XXX.gdb\TEST_R"


orgX = 120
orgY = 20

width = 1
height = 1

colX = 30
rowY = 30

start = time.time()


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

with arcpy.da.SearchCursor(fc, ["SHAPE@"]) as cursor:
    for row in cursor:
        #print math.floor(row[0].lastPoint.X - orgX / width)
        #print math.floor(row[0].lastPoint.Y - orgY / height)
        w = math.floor(row[0].lastPoint.X - orgX / width)
        h = math.floor(row[0].lastPoint.Y - orgY / height)
        npArray[w][h] += 1

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


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

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