Pysal和geoda很相似。 一个通过编写脚本实现空间分析,另一个通过软件操作实现空间分析。
Pysal官网介绍了一个开源、跨平台的地理数据分析库。
Pysal能做什么?
空间分析可视化就足够了。
一. pysal安装
安装非常简单,把相关的包都放进去。
pip install pysal
pip install esda
pip install geopandas
pip install splot
或者,打开py charm ——文件——设置—— python interpreter。
找到pysal和esda、geopandas和splot,然后单击安装包进行安装。
esda进行连接分析,geopandas对geometry进行矩阵处理,splot是绘图。
二.官方网站范例
Pysal官方网站,最上面有三个例子。 http://pysal.org/
如果沿着这3个例子进行操作,也可以认为已经入门了空间分析。
最初柏林的房价是莫兰指数。
二是分析局部空间自相关的集合图,LISA是localindicationsofspatialassociation。
三是计算空间权重。
三.测试数据
四. demo脚本
我们使用geopython-masterdata的数据berlin-listings.csv和berlin-neighbourhoods.geojson编写了简单的脚本。
空间权重:
fromlibpysal.weights.contiguityimportqueen
导入库
from libpysal import examples
import matplotlib.pyplot as plt
导入geo pandas as GPD
froms plot.libpysalimportplot _ spatial _ weights
GDF=GPD.read _ file (data/Berlin-neighbourhood s.geo JSON ) )
print(GDF.head ) )
weights=queen.from _ data frame (GDF )
plot_spatial_weights(weights,gdf ) )。
plt.show () )
房价分布情况:
导入esda
import pandas as pd
导入geo pandas as GPD
fromgeopandasimportgeodataframe
import libpysal as lps
import numpy as np
import matplotlib.pyplot as plt
from shapely.geometryimportpoint
# %matplotlib inline
GDF=GPD.read _ file (data/Berlin-neighbourhood s.geo JSON ) )
bl _ df=PD.read _ CSV (data/Berlin-listings.CSV ) )
geometry=[point(xy ) forxyinzip(bl_df.longitude,bl_df.latitude ) ]
CRS={ ' init ' : ' epsg :4326 ' }
bl_GDF=Geodataframe(bl_df,crs=crs,geometry=geometry ) ) ) )。
bl _ GDF [ ' price ' ]=bl _ GDF [ ' price ' ].as type [ ' float 32 ' ]
SJ_GDF=GPD.sjoin(GDF,bl_gdf,how='inner ',op='intersects ',lsuffix='left ',rsuffix='right )
median _ price _ GB=SJ _ GDF [ ' price ' ].group by [ SJ _ GDF [ ' neighbourhood _ group ' ] ].mean (
打印(median _ price _ GB ) )。
GDF=GDF.join(median_price_GB,on='neighbourhood_group ' ) ) ) ) ) ) ) ) ) ) ) 660 )
GDF.rename (columns={ ' price ' : ' median _ pri ' },inplace=True ) )
print(GDF.head ) 15 ) ) )。
PD.is null (GDF [ ' median _ pri ' ] (.sum ) ) ) ) ) ) ) ) ) )。
GDF [ ' median _ pri ' ].fill na (GDF [ ' median _ pri ' ].mean ),inplace=True ) )
gdf.plot(column='median_pri ' ) ) ) )。
plt.show () )
LISA聚合图:
导入库
import numpy as np
from giddy.directionalimportrose
import matplotlib.pyplot as plt
f=open (libpysal.examples.get _ path (SPI _ download.CSV ),' r ' ) )
lines=f.readlines (
f.close () )
lines=[line.strip ().split ),),for line in lines]
names=[ line [2] forlineinlines [ 1:-5 ] ]
DATA=NP.Array([list(map,line[3:] ) ) for line in lines[1:-5]] )
SIDS=list(range(60 ) ) ) ) ) ) ) )
out=[''United States 3/',
' ' Alaska 3/',
' ' District of Columbia ' ',
' ' Hawaii 3/',
' ' New England '、' ' Mideast '、
" ' Great Lakes ' ",
“' Plains '”,
" ' Southeast ' ",
" ' Southwest ' ",
' ' Rocky Mountain ' ',
“' far west3/' '”
snames=[ namefornameinnamesifnamenotinout ]
sids=[names.index(name ) for name in snames]
states=data[sids,]
us=data[0]
years=NP.arange (1969,2009 ) ) ) ) ) ) )。
REL=States/(us*1. ) ) )。
gal=libpysal.io.open (libpysal.examples.get _ path (States 48.gal ) )
w=gal.read ()
w.transform='r '
Y=rel[:[0,-1]]
# Y.shape
# Y
NP.Random.seed(100 ) )。
R4=rose(y,w,k=4) )。
r4.plot () )
plt.show () )
五.总结
空间分析,Geoda和pysal,都可以用。 只要达到目的,就可以使用软件,也可以写程序。