基於arcpy實現空間資料聚類,kmeans

2021-09-01 11:24:33 字數 1527 閱讀 6184

並不能直接進行空間資料的聚類,原理是讀取要素的x,y座標來進行聚類,然後將聚類中心儲存為空間資料以達到效果

# encoding: utf-8

from sklearn.cluster import kmeans

import numpy as np

import arcpy

import pandas as pd

from arcpy import env

env.workspace=r"d:\84.gdb"

target="bujiandian"

cursor=arcpy.searchcursor(target)

allfea=

dic={}

name="ysdm"#**要素列別的字段

for row in cursor :

ls=if(dic.has_key(row.getvalue(name))):

dic[row.getvalue(name)]+=1

else:

dic[row.getvalue(name)] = 1

data2=pd.dataframe(allfea,columns=[name,"ptx","pty"])

datafilter=data2.query(name+"=='9000402'")

#取座標進行聚類

df1 = datafilter.ix[:,1 :]

kmeans = kmeans(n_clusters=3, random_state=10).fit(df1)

#dfl是聚類的結果

df1['jllable'] = kmeans.labels_

##聚類中心

cent=kmeans.cluster_centers_

#將聚類中心儲存為空間資料

sr = arcpy.spatialreference(4326)

fc=arcpy.createfeatureclass_management( r"d:\cs","test.shp", "point", "", "","", sr)

arcpy.addfield_management(r"d:\cs\test.shp", "leibie", "text")

cursor=arcpy.insertcursor(fc)

for line in cent:

feature = cursor.newrow()

# add the point geometry to the feature

vertex = arcpy.createobject("point")

vertex.x = line[0]

vertex.y =line[1]

feature.shape = vertex

# add attributes

feature.leibie = "shumu"

# write to shapefile

cursor.insertrow(feature)

del cursor

del fc

基於空間資料庫的空間資料管理

gis空間資料管理已經走出了檔案管理的模式 龔健雅,2004 最初的gis 軟體一般採用檔案方法管理向量圖形資料,利用關聯式資料庫管理系統管理屬性資料。目前主要的gis軟體都採用了商用關聯式資料庫管理系統同時管理圖形和屬性資料。如supermap mapgis geostar arcgis geom...

Sql Server 空間資料

1 地理座標系空間需要用geography 平面座標系空間用geometry,計算距離使用stdistance 字串裡經緯度的順序是 經度 空格 緯度 即 longitude latitude 如果要計算兩個lat lon點之間的實際距離就需要將geometry型別轉成geography型別,不然結...

oracle的空間字段 空間函式,空間資料型別

alter table tablename add shape mdsys.sdo geometry 新增空間字段 insert into user sdo geom metadata values 表名 shape 欄位名 sdo dim array sdo dim element x 180,1...