有人用python开发GIS用户程序么

2020-12-11 15:05:05 字数 5629 阅读 1900

1楼:匿名用户

例子取自<>

**由两部分组成。第一部分是数据模型,第二部分是绘制数据(地图渲染)。

一、数据模型:使用python内置的列表(list),用来存储空间数据。

[python]view plaincopy

#datamodel

#alllayerswillhaveaname,1+points,andpopulationcount

name=0

points=1

pop=2

#createthestatelayer

state=["colorado",[[-109,37],[-109,41],[-102,41],[-102,37]],5187582]

#citieslayerlist

#city=[name,[point],population]

cities=

#adddenver

#addboulder

#adddurango

二、地图渲染

使用python turtle 绘图模块来渲染地图。其中有一个函数用来将世界坐标转换为像素坐标。

1、首先计算地图的显示范围及设定屏幕的绘制范围

[python]view plaincopy

#mapgraphicsrendering

map_width=800

map_height=500

#stateboundingbox

#usepythonmin/maxfunctiontogetboundingbox

minx=180

maxx=-180

miny=90

maxy=-90

forx,yinstate[points]:

ifx

elifx>maxx:maxx=x

ify

elify>maxy:maxy=y

#getearthdistanceoneachaxis

dist_x=maxx-minx

dist_y=maxy-miny

#scalingratioeachaxis

#tomappointsfromworldtoscreen

x_ratio=map_width/dist_x

y_ratio=map_height/dist_y

2、世界坐标到屏幕坐标的转换

[python]view plaincopy

#functiontoconvertlat/lontoscreencoordinates

defconvert(point):

lon=point[0]

lat=point[1]

x=map_width-((maxx-lon)*x_ratio)

y=map_height-((maxy-lat)*y_ratio)

#pythonturtlegraphicsstartinthemiddleofthescreen

#sowemustoffsetthepointssotheyarecentered

x=x-(map_width/2)

y=y-(map_height/2)

return[x,y]

3、绘制地图:标注和要素图形

[python]view plaincopy

#drawthestate

t.up()

first_pixel=none

forpointinstate[points]:

pixel=convert(point)

printpixel

ifnotfirst_pixel:

first_pixel=pixel

t.goto(pixel)

t.down()

#gobacktothefirstpoint

t.goto(first_pixel)

#labelthestate

t.up()

t.goto([0,0])

t.write(state[name],align="center",font=("arial",16,"bold"))

#drawthecities

forcityincities:

pixel=convert(city[points])

t.up()

t.goto(pixel)

#placeapointforthecity

t.dot(10)

#labelthecity

t.write(city[name]+",pop.:"+str(city[pop]),align="left")

t.up()

#performanattributequery

#question:whichcityhasthelargestpopulation?

#writetheresultbutmakesureit'sunderthemap

biggest_city=max(cities,key=lambdacity:city[pop])

t.goto(0,-1*((map_height/2)+20))

t.write("thebiggestcityis:"+biggest_city[name])

#performaspatialquery

#question:whichisthewesternmostcity?

#writetheresultbutmakesureit'sundertheotherquestion

western_city=min(cities,key=lambdacity:city[points])

t.goto(0,-1*((map_height/2)+40))

t.write("thewestern-mostcityis:"+western_city[name])

#hideourmappen

t.pen(shown=false)

t.done()

三、结果

有没有人用web方式开发gis的

2楼:广州启汇营销策划****

arcgis server是esri公司最新推出的服务器端品,主要可以实现两大功能:

强大的web gis系统的开发;

分布式gis系统的开发;

arcgis server其内核与arcgis desktop和arcgis engine一样,都是arcobjects库。其所谓的web gis,其实无非就是用web技术来封装arcobjects,而分布式的开发则是通过d***来实现的。

安装arcgis server的安装非常简单,先安装arcgis server,然后安装dot*** adf,最后用arccatelog添加一个server,然后再添加一个serverobject,这样就可以进行开发了。

python开发gis程序

3楼:hfy小杨

python之于gis与python之于it类似 giser采用python的原因也在于“人生苦短,我用python” python在gis中的应用非常之广 1. desktop gis: arcgis从版本10开始不再支持原来的vba,而改用python qgis本身大部分的**特别是插件部分可以采用python进...

有哪些 gis+python 的开发经验值得分享

4楼:我的小名叫仙女

python之于gis与python之于it类似

giser采用

怎么用python开发arcgis

5楼:匿名用户

在pyhton写的一些**,用户交互不方便,用户体验比较差,不方便重用。在arcgis中可以将用写的python**导入到toolbox中,这样用起来就比较方便了。这里用按要素裁剪栅格的python来演示如何导入arcgis中。

**如下:

import sys

reload(sys)

sys.setdefaultencoding( "utf-8" )

import arcpy

import string

from arcpy.sa import *

try:

raster = arcpy.getparameterastext(0) #要裁剪的栅格

clip_feat = arcpy.getparameterastext(1) #裁剪要素类

field = arcpy.getparameterastext(2) #命名字段

outworkspace = arcpy.getparameterastext(3) #命名字段裁剪后输出目录

for row in arcpy.searchcursor(clip_feat):

mask=row.getvalue("shape")

outpath=outworkspace+"\\"+str(row.getvalue(field))

outextractbymask = extractbymask(raster,mask)

outextractbymask.save(outpath)

except arcpy.executeerror:

print arcpy.getmessages()

在用户工具箱中新建工具箱(在系统工具箱中不能新建),在工具箱右键,添加脚本;

输入名称、标签、描述等信息。下一步,选择脚本文件。(这里需要注意的是:一定要勾选"存储相对路径名"这个选项)

设置参数,这是最重要的一步。其中参数即**中getparameterastext(n),并选择合适的数据类型,在参数属性中也可以进行相关设置。如果输出栅格名称按裁剪要素中的某个字段,需要设置"获取息"属性,还要进行过滤一下。

设置好一切参数过后,就可以来进行测试了。在本机上测试通!

接下来便是怎样移植到其他电脑了的问题了。前面我说说过要存储为相对路径,否则,将报错00576:脚本工具使用的脚本未处于所需位置。

创建脚本工具时,有一个选项用于存储相对路径名(而不是绝对路径名)。设置此选项后,脚本的相对位置和保存脚本工具的工具箱必须保持不变。执行工具时移动两者中的任何一个都会出现此错误。

但改为相对路径后,在其他电脑上也能正常运行,但弹出了警告窗口。原因是客户机上没有勾选扩展模块相应的功能。这个示例需要勾选空间分析模板,因为使用了按掩膜提取这个工具。

这个脚本实现的详情参考:使用python脚本批量裁切栅格

发布给他人,涉及到个人知识产权的问题,怎样让他人使用工具,又不能看到脚本**?如果编辑调试完成了,在脚本工具右键可导入脚本。

设置密码后,即可。