日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python gis 实例_用Python作GIS之五:从示例入手—example函数

發布時間:2024/7/5 python 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python gis 实例_用Python作GIS之五:从示例入手—example函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

進入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 实例_用Python作GIS之五:从示例入手—example函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。