进入STARS后,最简单的学习方法就是演示示例数据。对于源码的分析也可以从这里入手。
以下为出发菜单项“Example Project”的函数example:
def example(self):
"""canned loading of data files and matrices for debugging"""
self.project = SProject("current",self.master,self) topDir = options.getSTARSHOME()
self.project.directory = os.path.join(topDir,"data")
projectFile = os.path.join(self.project.directory,"csiss.prj")
t=self.project.ReadProjectFile(projectFile)
if hasattr(self.project,"coords"):
self.project.scaleCoords()
else:
self.report("no coords in project")
#self.master.configure(cursor=options.DEFAULTCURSOR)
#self.Editor.configure(cursor='crosshair')
self.projectSummary() self.enableMenus()
加粗标注的几行代码可作进一步详细了解:
(1)SProject:
代码如下所示
class SProject(Project):
"""Subclass to compose STARS project inside a GUI
"""
def __init__(self,name,master,app):
"""Constructor
name (string): name of project
master (Tk): application top level window
app (App): App instance
"""
Project.__init__(self,name)
self.master = master
self.app = app
self.fnt=("Times",10)
self.screenHeight = self.app.winfo_screenheight()
self.screenWidth = self.app.winfo_screenwidth()
if self.screenWidth > 1280:
self.screenWidth = 1280 # prevent spread across 2-extended displays
s = str(self.screenWidth) + " " + str(self.screenHeight)
self.screenDim = s
其中调用了父类Project,打开star.py文件,找到Project类,对其进行分析:
class Project:
"""Stars project.
Example Usage:
>>> from stars import Project
>>> s=Project("s")
>>> s.ReadData("csiss")
>>> income=s.getVariable("pcincome")
>>> region=s.getVariable("bea")
>>> w=spRegionMatrix(region)
>>> mi=Moran(income,w)
>>> print(mi.mi[70])
0.38918107312
"""
def __init__(self,name):
self.name = name
self.dataBase = Database()
self.getVariable = self.dataBase.getVariable
self.getMatrix = self.dataBase.getMatrix
self.addMatrix = self.dataBase.addMatrix
self.getMatrixNames = self.dataBase.getMatrixNames
self.getVariableNames = self.dataBase.getVariableNames
self.getTSVariableNames = self.dataBase.getTSVariableNames
self.getCSVariableNames = self.dataBase.getCSVariableNames
self.getCSTSVariableNames = self.dataBase.getCSTSVariableNames
(2)ReadProjectFile:
代码如下所示
def ReadProjectFile(self,fileName):
#assumes extension is passed into fileName
#check for file existence
if os.path.exists(fileName):
self.initialize()
config = ConfigParser.ConfigParser()
config.read(fileName)
projectDir = os.path.dirname(fileName)
#print config.sections()
for section in config.sections():
options = config.options(section)
for option in options:
value = config.get(section,option)
# print section,option,value
sec=self.options[section]
opt=sec[option]
opt.append(value)
sec[option]=opt
self.options[section]=sec
# self.summarizeOptions()
# read data files
dataFiles = self.options["data"]["files"]
for dataFile in dataFiles:
# print dataFile
dfile = os.path.join(projectDir,dataFile)
# print dfile
self.ReadData(dfile)
#print "data files"
# read any gal matricies
try:
galFiles = self.options["weight"]["gal"][0].split()
print galFiles
for galFile in galFiles:
# print galFile
gfile = os.path.join(projectDir,galFile)
self.ReadGalMatrix(gfile)
#print "gal"
except:
print "No Weights Matrices"
# read any gis boundary files
self.listGISNames = []
gisFiles = self.options["gis"]["gis"]
for gisFile in gisFiles:
fileName = gisFile+".gis"
self.listGISNames.append(fileName)
fileName = os.path.join(projectDir,fileName)
self.ReadGisFile(fileName)
fileName = os.path.join(projectDir,gisFile+".cnt")
if os.path.exists(fileName):
self.readCentroids(fileName)
else:
self.__calcCentroids()
self.gisResolution = self.options["graphics"]["screen"]
else:
print "Error: Cannot read project file: %s"%fileName
该段代码可以帮助解析STARS工程文件project的大致结构,打开系统自带示例的工程文件csiss.prj:
[data]
files: csiss
[weight]
gal: states48
[gis]
gis: us48
[graphics]
screen: 1280 1201
可以发现该文件分为四段,前三段分别对应有数据文件、权重文件、GIS文件的连接,最后一段为显示参数。
·数据文件存储统计数据信息,又分为两个文件:csiss.dht存储数据索引信息,csiss.dat存储数据主体信息,其中注释CS为空间序列数据,TS为时间序列数据,CSTS即为时空序列数据。
·权重文件存储空间权重信息,后缀名为gal。此文件第一行为空间实体数目,从第二行开始每两行构成固定格式,形如:[第一行]实体序号 权重关联实体个数[第二行]权重关联实体序号列表,如此循环至最后一个实体。参见states48.gal文件。
·GIS文件(后缀名为gis)存储空间实体的地图数据,结构形如:[数据头]空间实体编号 该实体内多边形编号 该多边形节点数[数据体]X坐标(换行)Y坐标。参见us48.gis文件。
(3)projectSummary:
代码如下所示
def projectSummary(self):
self.report(self.project.catalogue())
在guimaker.py中找到report函数:
def report(self,message):
"""enters messages into main application window. use for
entering results, commands called by gui, etc."""
self.Editor.insert(END,message)
t=len(message)
self.Editor.yview_scroll(t,UNITS)
self.Editor.insert(END,"\n>")
用Python作GIS之二:STARS开发环境配置
STARS的一般使用可以通过REGAL网页快速学习http://regionalanalysislab.org/?n=STARS再次不做详细介绍这里关注的主题是对STARS源代码分析即为使用Pytho ...
用Python作GIS之一:介入STARS
STARS的全称是Space-Time Analysis of Regional Systems,直译过来就是区域系统时空分析软件.这是针对区域多时相数据的分析包,源代码公开.该软件将最近几年发展起来 ...
用Python作GIS之四:Tkinter基本界面的搭建
Python下的主窗口可以定义如下:def start(self): #self.project = Project("temp") #self.pro ...
用Python作GIS之三:入口程序 - stargui.py
"""gui start file for Space-Time Analysis of Regional Systems#STARS的图形用户界面入口(高级用户可以直接 ...
C++开发python windows版本的扩展模块示例
C++开发python windows版本的扩展模块示例 测试环境介绍和准备 测试环境: 操作系统:windows10 Python版本:3.7.0 VS版本:vs2015社区版(免费) 相关工具下载 ...
python中hashlib模块用法示例
python中hashlib模块用法示例 我们以前介绍过一篇Python加密的文章:Python 加密的实例详解.今天我们看看python中hashlib模块用法示例,具体如下. hashlib ha ...
Python自定义线程类简单示例
Python自定义线程类简单示例 这篇文章主要介绍了Python自定义线程类,结合简单实例形式分析Python线程的定义与调用相关操作技巧,需要的朋友可以参考下.具体如下: 一. 代码 # - ...
python golang中grpc 使用示例代码详解
python 1.使用前准备,安装这三个库 pip install grpcio pip install protobuf pip install grpcio_tools 2.建立一个proto文件 ...
Python Socket 编程——聊天室示例程序
上一篇 我们学习了简单的 Python TCP Socket 编程,通过分别写服务端和客户端的代码了解基本的 Python Socket 编程模型.本文再通过一个例子来加强一下对 Socket 编程的 ...
随机推荐
Yii javascript 的结合 账号禁用 激活 的设置。
2014-02-16 控制器中的代码: public function actionUpdown(){ //print_r($_POST);die(); if(Buser::model()->u ...
回车,根据编码获取相应记录,然后再将这录绑定到AutoList
问题描述: 回车后,根据编码获取相应记录,然后再将这录绑定到AutoList(我们自定义控件,其实就是下拉列表),回车事件是用jquery ajax实现,这样在后台给AutoList绑定数据源,如果不 ...
学习笔记_过滤器应用(粗粒度权限控制(拦截是否登录、拦截用户名admin权限))
RBAC ->基于角色的权限控制 l tb_user l tb_role l tb_userrole l tb_menu(增.删.改.查) l tb_rolemenu 1 说明 我们给 ...
windows下体验Redis
Redis 是一个高性能的key-value数据库, 使用内存作为主存储,数据访问速度非常快,当然它也提供了两种机制支持数据持久化存储.比较遗憾的是,Redis项目不直接支持Windows,Windo ...
Python安装和开发环境搭建
1.官网:http://www.python.org/download/下载安装包,目前最新版本为3.6,安装包很多地方可以下,也可以在360软件管家上下载安装 特别要注意勾选:Add Python ...
css-div翻转动画
Spring Boot + Jpa + Thymeleaf 增删改查示例
快速上手 配置文件 pom 包配置 pom 包里面添加 Jpa 和 Thymeleaf 的相关包引用 org.springframe ...
Spring Security编程模型
1.采用spring进行权限控制 url权限控制 method权限控制 实现:aop或者拦截器(本质就是之前之后进行控制)--------------------proxy就是 2.权限模型: 本质理 ...
@Scheduled执行定时任务与cron表达式
1 配置文件形式执行定时任务 1 1.X 版本与spring结合使用实例 1.1 常用maven管理 pom.xml文件