python开发gis
❶ 有哪些 GIS+python 的开发经验值得分享
AngularJS 与 jQuery 等传统操作 DOM 的思想有所不同,
对于 jQuery 等,一般是先有完整 DOM 然后在这些 DOM 的基础上进行二次调教。
而 AngularJS 等框架则是 根据 数据模型 以及其对应的 DOM 模版,然后通过模版像搭积木那样组合页面。
显然的,前者在 SEO 上有天然优势;而后者,搜索引擎还只能拿到某个模版,而无内容。
暂时没想到有什么特别好的解决方案,或许,对于内容页,可以继续使用传统方式,而只在需要更多交互的地方应用 AngularJS,特别是在移动端应用上。
同理适用于各种 前端的 MVC 框架,后端只要为前端提供数据接口,而不再需要为其拼接 HTML.
## 模块化
AngularJS 也是遵循 AMD 的。(AMD 是啥,参考:使用 AMD、CommonJS 及 ES Harmony 编写模块化的 javaScript)
虽然它也可以按照传统代码方式来写(其首页介绍的用法 AngularJS — Superheroic JavaScript MVW Framework),但是,既然都提供了这么一种模块的方法,为何不用上呢
angular.mole('app', [
'moleA',
'moleB',
])
.controller('MainCtrl', [
'$scope',
function ($scope) {
}]);
而且,这种写法还可以方便做代码的合并与压缩,在后面 Grunt 自动化 一节中,就会提到使用 Nodejs/Grunt 来自动的做这些事情。
## 可复用模版 or 业务逻辑模版
今年 Google 开发者大会中 提到的 Polymer(Welcome - Polymer)
这货让人感觉像是 Angular Directives 的进化。
而 Directives 做的事,就是把一堆 DOM 封装为一条或者一组 自定义的 HTML标签,作为可复用的模版,以供组装业务调用。 Demos 可参看:Angular directives for Twitter's Bootstrap
当然,为了方便修改,很多时候在做 directive 的时候需要将 template 用 templateUrl 代替,
不用担心文件的碎片化,不利于前端加载 Grunt 自动化 一节 会提到如何合并这些碎片化的 模版。
Directives 是作为可复用的模版,
而业务逻辑则是一般是一个业务对应一个 html 及其的 controller.
❷ arcgis利用 python设置高程颜色
1、四色填充算法—回溯法。
2、ArcGIS生成邻接表。
3、基于Python编写工具计算每个省份的颜色。
4、在ArcGIS中添加脚本工具。
5、运行脚本工具。
6、以上就是arcgis利用python设置高程颜色的方法。
❸ 向精通ArcGIS——python脚本开发的同学请教
上段代码运行出错就是因为程序认为No是个字符串啊,把No直接改成1运行没有问题 Traceback (most recent call last): File "C:\Documents and Settings\Administrator\桌面\a.py", line 18, in select("XYSheet1.shp","XYSheet1_Select1.shp","\"矿区编号\" =No") File "C:\Documents and Settings\Administrator\桌面\a.py", line 16, in select arcpy.Select_analysis(in_features, out_feature_class, where_clause) File "E:\ArcGIS\Desktop10.0\arcpy\arcpy\analysis.py", line 88, in Select raise eExecuteError: ERROR 999999: 执行函数时出错。指定了不存在的列。指定了不存在的列。执行(Select)失败。
❹ 使用VScode配置Python GIS开发环境
Python是进行GIS开发和数据处理的常用语言,如何用宇宙第一IDE进行GIS开发,为其配置Python环境是一个简单的入门问题。本文基于ArcGIS Pro自带的conda环境进行配置,实现可以使用GIS分析工具和其他Python模块。
略
对于常用的站点包ArcGIS Pro已经包括,简单的点击增加就可以进行导入
❺ arcgis 怎么用python做统计分析
方法/步骤
1
打开arcmap软件,点击工具栏上的ArcToolbox工具箱,在工具箱里面选择要进行数据处理的工具(工具的选择视数据处理的内容而定),本文选择了“Define Projection”定义投影的工具进行说明。
双击此工具,在弹出的工具窗口点击右下角的“Show Help>>”按钮。
2
点击“Tool Help”按钮,此时就打开了软件的帮助文档并定位到了此工具(define projection)对应的页面,往下拉动滚动条,定位到此工具的python脚本的内容:
Syntax 介绍了此工具脚本的语法
Code Sample 介绍了脚本使用的例子
拷贝脚本使用例子里面的代码。
3
在软件的主界面点击“Geoprocessing”菜单-->点击“Python”菜单项,即出现内嵌在arcigis中的python工具窗口。
python工具窗口的左边是代码编辑区域,右边是信息提示区域。
4
把第2步拷贝的代码语句粘贴到python工具窗口的左边区域,修改一下工具脚本的参数(视具体工具和数据而定),连续点击两下回车键。
5
等待脚本程序的执行完成,完成之后在桌面右下角会弹出提示信息,同时pythong工具窗口的右边区域也会有具体的工具脚本执行信息。
6
执行完成之后,在arcmap加载处理过的数据,右键查看属性,可以看到通过此工具脚本(define projection)进行投影定义的数据已经具有了投影参数。
http://jingyan..com/article/eae07827ba96a51fec548513.html
❻ 有人用python开发GIS用户程序么
例子取自<<Learning Geospatial Analysis with Python>>
代码由两部分组成。第一部分是数据模型,第二部分是绘制数据(地图渲染)。
一、数据模型:使用python内置的列表(list),用来存储空间数据。
[python]view plain
#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
cities.append(["DENVER",[-104.98,39.74],634265])
#AddBoulder
cities.append(["BOULDER",[-105.27,40.02],98889])
#AddDurango
cities.append(["DURANGO",[-107.88,37.28],17069])
#MAPGRAPHICSRENDERING
map_width=800
map_height=500
#StateBoundingBox
#UsePythonmin/maxfunctiontogetboundingbox
minx=180
maxx=-180
miny=90
maxy=-90
forx,yinstate[POINTS]:
ifx<minx:minx=x
elifx>maxx:maxx=x
ify<miny:miny=y
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
#Functiontoconvertlat/lontoscreencoordinates
defconvert(point):
lon=point[0]
lat=point[1]
x=map_width-((maxx-lon)*x_ratio)
y=map_height-((maxy-lat)*y_ratio)
#
#
x=x-(map_width/2)
y=y-(map_height/2)
return[x,y]
#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:?
#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()
二、地图渲染
使用python Turtle 绘图模块来渲染地图。其中有一个函数用来将世界坐标转换为像素坐标。
1、首先计算地图的显示范围及设定屏幕的绘制范围
[python]view plain
2、世界坐标到屏幕坐标的转换
[python]view plain
3、绘制地图:标注和要素图形
[python]view plain
三、结果
❼ arcgis怎么用python
arcgis软件中有专门的python窗口
❽ Arcgis Engine二次开发用python可以吗
1.自定义工具箱是什么
就像名字一样,自定义工具箱是由个人创建的工具箱,就像下面这样,可以理解成一个 .tbx 后缀的压缩包,每一个工具箱中都可以添加多个工具集、脚本工具甚至模型构建器工具。
一大堆工具箱
1.1如何添加自定义工具箱(熟悉可跳过)
第一步:右键点击 ArcToolbox -> 添加工具箱
第二步:在打开的添加工具箱窗口中选中需要添加的工具,然后点击右下角的打开即可。
添加工具箱到 Arcmap
1.2如何创建自定义工具箱
点击右上角的红色工具箱符号,可以新建并重命名一个工具箱。
我们这里新创建了一个海怪工具箱,用于之后的教程演示。
新建工具箱
1.3添加一个脚本工具
新创建的工具箱就像一个大箱子,箱子呢是用来装工具的,你可以直接在工具箱中右键,然后点击添加,再点击脚本,进而创建一个脚本工具;
亦或是右键,点击新建,再点击工具集,创建一个可以自定义名称的工具集,然后在工具集里新建一个脚本工具。
这里添加的脚本工具只是一个空壳,我们后面会继续完善。
新建的工具箱位于 ../Chapter7/海怪工具箱.tbx。
2.工具箱的封装
工具箱由三部分组成,其中有两部分需要我们来控制:
一是输入界面:确定工具箱输入界面的参数定义和设置;
二是 Python 源代码:功能的实现,为 .py 后缀的脚本文件;
三是对参数行为提供额外控制的可选验证代码,其位于工具箱中(这部分自带,基本上不用修改)。
所以下面的重点就是输入界面和 Python 源代码。
2.1工具箱输入界面
工具箱输入界面,或者说图形交互界面(GUI),就像下面的几张图一样,从该界面我们可以控制工具的行为,自定义输入界面然后配合 Python 脚本,可以实现多种客制化的功能。
简单来说,你可以认为输入界面是依托于 Arcmap 的“前端”,脚本代码就是负责运行的“后端”。
导入导出工具:
为方便演示,制作一个非常简单的工具箱,它的功能呢就是把输入的要素类(数据库或者 shp )再导出来而已,是完全没有用的导入导出功能啦,不过作为演示还是非常不错的。
制作完成后的导入导出工具的界面
第一步:
在工具箱中,右键点击添加,再点击脚本,然后修改名称,修改成你想要的名字,勾选存储相对路径名,然后点击下一页。
修改名称
第二步:
然后添加脚本文件,添加该脚本文件 ../Chapter7/toolscript/input_and_output.py,读者可以在最后的下载包中找到该文件。
然后点击下一页。
链接python脚本
第三步:
控制用户交互界面。ArcGIS 在这里内置了一整套简单但是实用的图形控件,比如输入菜单、下拉框、多选框、单选等,借由这些图形控件我们可以控制脚本工具的图形交互界面。
我们这里使用的脚本功能非常简单,上面也有说到:输入一个矢量要素类,不做任何处理,然后输出一个矢量要素类。
为了匹配这个脚本,我们需要设置一个输入图层的控件,同时为了能顺利的输出,也需要一个输出图层的控件,注意一个是输入一个是输出。
从下图可以看到,左边(左边的橙色框)是显示名称,其中输入输出控件的名称以及输入控件的名称,这里命名为输入要素和输出要素;然后在右边(右边的橙色框)的数据类型下拉框中,我们选择要素图层,这里只能做选择,不能任意输入。
设置名称和数据类型
那么输入输出是如何区分的呢?
选中输入要素(变成蓝色),然后可以看到下方(下方橙色框)的参数属性设置选项卡,这里可以对参数进行调整。
参数选项
① 类型:有三种,一般只会用到 Required 和 Optional,表示必须和可选,用于控制参数是否可以忽略不填;
② 方向: 两种,Input 和 Output,表示输入和输出,大部分情况都是使用 Input 来获得参数,Output 用于获得最后的成果数据,像是矢量、栅格或者图表;
③ 多值:Yes 或者 No,用于输入多个相同类型的数据,工具打开后就是下面这样,在输入要素中可输入多个要素类;
④ 默认:设置一个控件的默认值,直接输入即可。可配合多值一同使用,使用 ; (英文的分号)分开,
结果如下,可以看到一打开该工具就已经填充上了预设的多个默认值(报错是因为数据类型不是要素图层);
⑤ 环境:工具箱的环境设置,比如掩膜、容差范围、默认数据库位置等,一般不预先设置;
⑥ 过滤器:选择文件类型可以在选择文件时只显示特定格式的文件;
⑦ 获取自:指定数据的获取源。这是个什么意思呢?比如我们想要获取图层A的某个字段,获取源就是图层A。
以下面这种图作为例子,新增名为字段的控件(上方的橙色框),数据类型也是字段,然后参数属性中获取自选择输入要素(下方橙色框)。
设置字段控件
点击完成后,打开脚本工具。在输入要素框中选择一个图层,然后再点击获取字段,如下就可以选择图层中的字段了。
获取图层的字段
⑧ 符号系统:在最下面还有一个符号系统,通常只能作用于输出的矢量图层(方向:Output),可为输出图层指定设置好的 lyr 文件样式。
设置符号系统
第四步:
点击右下方的完成,那么脚本工具的输入界面就完成了。
2.2 Python 脚本
工具箱输入界面和 Python 代码要相互配合才行,工具箱界面中的输入、输出以及各种各样的参数,在 Python 脚本文件中都得一一对应上,将输入界面中的各个参数传给 Python 脚本,这样才能让 Python 脚本按照预期的效果正常运行。
看上去有点麻烦,但实际上 arcpy 中提供了现成的函数就可以直接获得参数。
①参数对接(获取)
至于如何对接参数,我们使用刚刚的那个脚本文件举例:
../Chapter7/toolscript/input_and_output.py
# -*- coding:utf-8 -*-
import arcpy
#▶1◀
input_lyr = arcpy.GetParameterAsText(0)
output = arcpy.GetParameterAsText(1)
if __name__ == '__main__':
lyr = arcpy.mapping.Layer(input_lyr)
arcpy.CopyFeatures_management(lyr, output)
▶1◀:arcpy 提供了 GetParameterAsText(index) 函数,该函数根据输入界面的排序号码获得指定的参数。比如 GetParameterAsText(0) 获得的就是输入图层参数, GetParameterAsText(1) 获得的就是第二个参数,也就是输出图层参数。
如果有更多参数,以此类推。
②参数对接中应该注意的情况
GetParameterAsText(index) 从输入界面获得的参数都会转变成字符串,没错都是字符串。
如果你只是输入输出地址这种,那么没有问题,因为地址本来就是字符串,但是如果你设置了一个选择长度范围的长整型的控件、亦或是某种布尔值选择,最后输入到 python 脚本这里都会变成字符串。
整数变成字符串,使用 int(str) 规避;
布尔型变成字符串,True 变成了 "True",False 变成了 "False",这样就不能判断真假了,需要写一个判断语句或者随便你,方法很多;
还有就是一个输入控件多值的情况,所有值根据先后连接成一个字符串,中间由 、(英文分号)间隔,可以使用 split 函数分开;
❾ 有哪些 GIS+Python 的开发经验值得分享
GIS 和 python 的结合有很多种可能性
Arcpy 参考ArcPy and ArcGIS (豆瓣), pyQGIS 参考PyQGIS Developer Cookbook
Geopython GIS相关库
GDAL 参考 Welcome to the Python GDAL/OGR Cookbook!
各种空间数据库,如 spatialite 参考 SpatiaLite Cookbook
基础库(抽象库)
GDAL 不多说,GIS万物本源
Proj.4 制图学投影转换库
geojson geojson数据处理,点线面
高级库
Shapley GIS的图像处理
Fiona GIS数据读入写出
Rtree Rtree空间索引
pyproj Proj.4的接口扩展
OWSLib WMS地图服务发放
basemap 画地图
超高级库
geopandas 整合了pandas,shapely,fiona,descartes,pyproj和rtrees可以直接用于数据处理
geodjango django出品,保护GDAL,GEOS等可以发送地图服务
参考 Python 笔记三:Geopython GIS相关库
而如今,javascript在互联网的地位也变得越来越重要,GIS+JS的项目也氤氲而生,所以问题来了。参考:有哪些GIS+JavaScript(node.js)的开发经验值得分享? - Node.js
或者关注我的博客,写得不是很好,希望各路大神多多留言指导。
Awesome GIS(GIS Tech Stack技术栈)
Geomatics专栏点此:Geomatics(GIS,GPS,RS,Surveying)
语言
Python 最好的快速开发语言,是一门API艺术
awesome-python
1简单的入门
2总结入门坑及基础资源
3Geopython GIS相关库
4Python的常用库入门
5Flask框架
6入门爬虫坑--网页数据压缩(python deflate gzip)
7Requests爬虫技巧
Node.js 最炙手可热的网络技术源泉,可用于WebGIS
awesome-javascript
1常用Global库
2入门及GeoNode.js GIS相关库
前段
Leaflet 兼容移动端,和现代的一些框架一样优先考虑移动端
1leaflet入门
2简单插件编写leaflet-pip-v2
3进阶插件编写geojsonFilter
Mapbox总有人讨论“Mapbox VS Leaflet?”这是个烂问题,Mapbox是Leaflet的超集,就像Typescript和Javascript之间的关系一样
Openlayer3扯淡大叔教程
Turf js层面做出简单的空间分析
后端
Geoserver 基于Java的地理信息服务的发布,使用简单
Mapserver 基于C语言的地理信息服务的发布,内存占用小
GDAL 数据格式转换
1GDAL命令行入门
2python for GDAL
3gdal CLI Cheat Sheet
数据格式
GeoJSON 开源地理信息JSON格式
awesome-geojson
geojson-js-utils 空间数据简单处理js实现
geojson-python-utils空间数据简单处理python实现
TopoJSON 开源地理信息JSON格式,大小要比GeoJSON小40%
TileJSON 瓦片数据包装的JSON格式,用的不多
WKT&WKB 文本标记语言表示矢量数据
WKT&WKB 笔记一:格式介绍
数据库
Spatialite 空间数据的查询等处理,小项目足矣
1简单的入门
2CLI Cheat Sheet
3python for Spatialite
4NET平台使用spatilite扩展
5Spatiliate2GeoJson数据的转换
Postgresql 大型空间数据项目
MBTILES 承载瓦片的数据,快速索引
1入门与简单应用
瓦片渲染
Global Mapper 专门用作已有栅格图像切片
Mapnik 专门用于矢量数据的切片
TileMill 在矢量数据渲染时,运用CartoCSS对矢量数据赋予样式
数据处理
QGIS 开源GIS数据处理桌面软件,其中包含Grass,SAGA两个学术界开源GIS平台
1简单的介绍
2地图综合
Mapsharper 数据综合神器
1地图综合神器
数据资料
地理空间数据云 没想到数据来的这么快
填坑
1网页端JS的缓存问题
2Angular遇到的一些坑
3SpatialiteSharp的使用坑
整个技术栈主要针对的是轻量或者小项目去考虑,运用一些流行的尽可能开源的工具去做,这是我的一些想法和笔记,详情参考从mapbox的开源工具看Web GIS的发展,希望能给您一点点帮助。PS:我在github上看到一个awesome gis,并非我主导的,希望各位GISer可以一起参与修改。
转载,请表明出处。总目录Awesome GIS
❿ 在GIS和测绘领域python和C#哪个更实用
Python适合做数据和文件处理应用,C#适合做具有UI交互的应用。
至于哪个实用的问题,在实际工作中遇到的就是实用的,只学不用的都不实用。