python 与开源Gis 书本知识点测试
# -*- coding: utf-8 -*-
print(u"python与开源QGis课题研究组")
#print("汉字")
#+++++++++++++++++
#创建矢量数据文件
#+++++++++++++++++
try:
from osgeo import ogr
except:
import ogr
driver = ogr.GetDriverByName("ESRI Shapefile")
import os
'''
ds = driver.CreateDataSource("xx_tesp.shp")
layer = ds.CreateLayer('test',geom_type = ogr.wkbPoint)
fieldDefn = ogr.FieldDefn('id',ogr.OFTString)
fieldDefn.SetWidth(4)
layer.CreateField(fieldDefn)
featureDefn = layer.GetLayerDefn()
print(featureDefn)
feature = ogr.Feature(featureDefn)
#设定几何形状
point = ogr.Geometry(ogr.wkbPoint)
point.SetPoint(0,123,123)
#设定字段数值
feature.SetField('id',23)
#将要素写入到图层
layer.CreateFeature(feature)
ds.Destroy()
import os
out_shp = "xx_tesp.shp"
dir(out_shp)
if os.path.exists(out_shp):
driver.DeleteDataSource(out_shp)
dir(out_shp)
point = ogr.Geometry(ogr.wkbPoint)
print(point)
point.AddPoint(10,20)
print(point)
point.AddPoint(30,20)
print(point)
line = ogr.Geometry(ogr.wkbLineString)
print(line)
line.AddPoint(10,10)
print(line)
line.AddPoint(20,20)
print(line)
line.SetPoint(2,30,30)
print(line)
print(line.GetPointCount())
print(line.GetX(0))
print(line.GetX(1))
print(line.GetX(3))
ring = ogr.Geometry(ogr.wkbLinearRing)
ring.AddPoint(0,0)
ring.AddPoint(100,0)
ring.AddPoint(100,100)
ring.AddPoint(0,100)
ring.CloseRings()
print(ring)
print(type(ring))
outring = ogr.Geometry(ogr.wkbLinearRing)
outring.AddPoint(0,0)
outring.AddPoint(100,0)
outring.AddPoint(100,100)
outring.AddPoint(0,100)
outring.AddPoint(0,0)
inring = ogr.Geometry(ogr.wkbLinearRing)
inring.AddPoint(25,25)
inring.AddPoint(75,25)
inring.AddPoint(75,75)
inring.AddPoint(25,75)
inring.CloseRings()
polygon = ogr.Geometry(ogr.wkbPolygon)
polygon.AddGeometry(outring)
polygon.AddGeometry(inring)
print(polygon.GetGeometryCount())
#outring2 = polygon.GetGeometryRef(0)
#inring2 = polygon.GetGeometryRef(1)
#print(outring2)
#print(inring2)
for ringx in range(polygon.GetGeometryCount()):
print(polygon.GetGeometryRef(ringx))
multipoint = ogr.Geometry(ogr.wkbMultiPoint)
point = ogr.Geometry(ogr.wkbPoint)
point.AddPoint(10,10)
multipoint.AddGeometry(point)
print(multipoint)
point.AddPoint(20,20)
multipoint.AddGeometry(point)
print(multipoint)
mp = multipoint.GetGeometryCount()
print(mp)
for mpx in range(multipoint.GetGeometryCount()):
print(multipoint.GetGeometryRef(mpx))
extfile = 'xx_data_pt.shp'
if os.access(extfile,os.F_OK):
driver.DeleteDataSource(extfile)
#1、创建数据源
newds = driver.CreateDataSource(extfile)
#print(dir(newds))
#print(dir(newds.CreateLayer))
#2、创建数据源图层
lyrn = newds.CreateLayer('point',None,ogr.wkbPoint)
#3、定义图层字段,添加图层字段
fieldcnstr = ogr.FieldDefn("idx",ogr.OFTInteger)
lyrn.CreateField(fieldcnstr)
fieldf = ogr.FieldDefn("namex",ogr.OFTString)
lyrn.CreateField(fieldf)
point_coors_arr = [[1,0],[2,0],[3,0],[4,0]]
for idxx,point_coors in enumerate(point_coors_arr):
#print(type(idxx))
#print(type(point_coors))
wkt = 'POINT (%f %f)' % (point_coors[0],point_coors[1])
#print(wkt)
geom = ogr.CreateGeometryFromWkt(wkt)
feat = ogr.Feature(lyrn.GetLayerDefn())
feat.SetField('idx',idxx)
feat.SetField('namex','ID{0}'.format(idxx))
feat.SetGeometry(geom)
lyrn.CreateFeature(feat)
#print(lyrn.GetLayerDefn())
#print('idx:%i' % (idxx))
#print("namex:%s" % 'ID{0}'.format(idxx))
#x = 'ID{0}'.format(idxx)
#print(x)
"""
wkt = 'POINT (%f %f)' % (point_coors[0],point_coors[1])
geom = ogr.CreateGeometryFromWkt(wkt)
feat = ogr.Feature(lyrn.GetLayerDefn())
feat.SetField('idx',idxx)
feat.SetField('namex','ID{0}'.format(idxx))
feat.SetGeometry(geom)
lyrn.CreateFeature(feat)
"""
newds.Destroy()
extfile = 'xx_data_line.shp'
driver = ogr.GetDriverByName("ESRI Shapefile")
if os.access(extfile,os.F_OK):
driver.DeleteDataSource(extfile)
newds = driver.CreateDataSource(extfile)
lyrn = newds.CreateLayer('line',None,ogr.wkbLineString)
#字段定义创建
fieldcnstr = ogr.FieldDefn("id",ogr.OFTInteger)
fieldf = ogr.FieldDefn("name",ogr.OFTString)
lyrn.CreateField(fieldcnstr)
lyrn.CreateField(fieldf)
point_coors_arr = [[0,0,1,2,3,-2,6,0]]
#print(point_coors_arr)
#print(type(point_coors_arr))
#print(len(point_coors_arr))
for idx,point_coors in enumerate(point_coors_arr):
#wkt = 'LINESTRING(%f %f,%f %f,%f %f,%f %f)' % (point_coors[len(point_coors_arr) - len(point_coors_arr)],point_coors[len(point_coors_arr) - len(point_coors_arr) + 1],)
wkt = 'LINESTRING(%f %f,%f %f,%f %f,%f %f)' % (point_coors[0],point_coors[1],point_coors[2],point_coors[3],point_coors[4],point_coors[5]
,point_coors[6],point_coors[7])
print(wkt)
geom = ogr.CreateGeometryFromWkt(wkt)
feat = ogr.Feature(lyrn.GetLayerDefn())
feat.SetField('id',idx)
feat.SetField('name','line_one')
feat.SetGeometry(geom)
lyrn.CreateFeature(feat)
newds.Destroy()
extfile = 'xx_data_polygon.shp'
driver = ogr.GetDriverByName('ESRI Shapefile')
if os.access(extfile,os.F_OK):
driver.DeleteDataSource(extfile)
#创建数据源文件
newds = driver.CreateDataSource(extfile)
#创建几何形状图层
lyrn = newds.CreateLayer('polygon',None,ogr.wkbPolygon)
#定义字段
fieldcnstr = ogr.FieldDefn('id',ogr.OFTInteger)
fieldf = ogr.FieldDefn('name',ogr.OFTString)
#图层添加字段
lyrn.CreateField(fieldcnstr)
lyrn.CreateField(fieldf)
wkt_polygon_1 = 'POLYGON((2 1,12 1,12 4,2 4,1 2))'
wkt_polygon_2 = 'POLYGON((4 1,8 1,8 3,4 3,3 1))'
wkt_polygon_3 = 'POLYGON((8 4,10 4, 10 5,8 5,6 4))'
#print(type(wkt_polygon_1))
point_coors_arr = [wkt_polygon_1,wkt_polygon_2,wkt_polygon_3]
#print(type(point_coors_arr))
for idx,point_coors in enumerate(point_coors_arr):
#print(idx)
#print(point_coors)
wkt = point_coors
#使用wkt创建几何图形
geom = ogr.CreateGeometryFromWkt(wkt)
#获取图层要素 ogr.GetLayerDefn , ogr.Feature()
feat = ogr.Feature(lyrn.GetLayerDefn())
feat.SetField('id',idx)
print('poly_{idx}'.format(idx = idx))
#feat.SetField('name','poly_{idx}'.format(idx = idx))
feat.SetField('name','poly_{idx}'.format(idx = idx))
feat.SetGeometry(geom)
lyrn.CreateFeature(feat)
newds.Destroy()
from osgeo import ogr
import os,math
inshp = "xx_data_polygon.shp"
ds = ogr.Open(inshp) #打开shp源文件
driver = ogr.GetDriverByName("ESRI Shapefile")
outputfile = "xx_data_polygon_copy.shp" #输出shp
if os.access(outputfile,os.F_OK):
driver.DeleteDataSource(outputfile)
pt_cp = driver.CopyDataSource(ds,outputfile)
pt_cp.Release()
from osgeo import ogr
import os,math
inshp = 'xx_data_polygon.shp'
ds = ogr.Open(inshp)
driver = ogr.GetDriverByName("ESRI Shapefile")
outputfile = 'cp_polygon.shp'
if os.access(outputfile,os.F_OK):
driver.DeleteDataSource(outputfile)
pt_cp = driver.CopyDataSource(ds,outputfile)
pt_cp.Release()
outputfile = 'cp2.shp'
if os.access(outputfile,os.F_OK):
driver.DeleteDataSource(outputfile)
newds = driver.CreateDataSource(outputfile)
layer = ds.GetLayer()
pt_layer = newds.CopyLayer(layer,'xxx')
#newds.Destroy()
outputfile = 'cp3.shp'
if os.access(outputfile,os.F_OK):
driver.DeleteDataSource(outputfile)
newds = driver.CreateDataSource(outputfile)
layernew = newds.CreateLayer('worldcopy',None,ogr.wkbLineString)
layer = ds.GetLayer()
feature = layer.GetNextFeature()
if feature is not None:
layernew.CreateFeature(feature)
feature = layer.GetNextFeature()
newds.Destroy()
driver = ogr.GetDriverByName("ESRI Shapefile")
inshp = 'xx_data_polygon.shp'
ds = ogr.Open(inshp)
outf = 'cxp.shp'
if os.access(outf,os.F_OK):
driver.DeleteDataSource(outf)
print("exists")
newds = driver.CreateDataSource(outf)
layernew = newds.CreateLayer('worldcopy',None,ogr.wkbLineString)
layer = ds.GetLayer()
#print(layer)
feature = layer.GetNextFeature()
print(feature)
while feature is not None:
layernew.CreateFeature(feature)
feature = layer.GetNextFeature()
newds.Destroy()
'''
from osgeo import ogr
ds = ogr.Open('convChk.shp')
layer = ds.GetLayer(0)
spatialRef = layer.GetSpatialRef()
print(spatialRef)
python 与开源Gis 书本知识点测试的更多相关文章
- Python与开源GIS
https://www.osgeo.cn/pygis/ 这里列出了与 GIS 相关的 Python 开源类库与工具. 基础类库(抽象库) • GDAL/OGR 是大部分开源GIS的基础,也包括如Arc ...
- Python与开源GIS:在OGR中使用SQL语句进行查询
摘要: 属性选择与空间选择都可以看作是OGR内置的选择功能,这两种功能可以解决大部分实际中的问题.但是也有这种时候,就是进行查询时的条件比较复杂.针对这种情况,OGR也提供了更加灵活的解决方案:支持使 ...
- 开源GIS软件初探
谈到GIS软件,首先让我们想到的便是GIS界的龙头大哥ESRI公司旗下的ArcGIS产品,从最初接触的version 9.2到如今的version 10.1,其发展可谓风生水起.MapInfo软件也不 ...
- 开源GIS简介.学习
开发者都希望自己的软件能够运行在尽可能多的计算机上.然而事与愿违,摆在 GIS开发者面前的仍然是对峙的平台.J2EE随着Java5.0的发布,已经正式更名为JavaEE,而微软也正式发布了.NET2. ...
- 2016年GitHub排名前20的Python机器学习开源项目(转)
当今时代,开源是创新和技术快速发展的核心.本文来自 KDnuggets 的年度盘点,介绍了 2016 年排名前 20 的 Python 机器学习开源项目,在介绍的同时也会做一些有趣的分析以及谈一谈它们 ...
- 开源GIS简介
原文 开源GIS C++开源GIS中间件类库: GDAL(栅格)/OGR(矢量)提供了类型丰富的读写支持 GEOS(Geometry Engine Open Source)是基于C++的空间拓扑分析实 ...
- 常用开源GIS项目
常用开源GIS项目 常用开源桌面GIS软件 QGIS 始于2002年5月,算得上是开源GIS平台中的后起之秀.界面友好,分析功能可与GRASS GIS相媲美.主页:http://www.qgi ...
- 目前比较流行的Python量化开源框架汇总(交易+风险分析工具)
注:点击框架名称通往Github talib talib的简称是Technical Analysis Library,主要功能是计算行情数据的技术分析指标 numpy 介绍:一个用python实现的 ...
- python 各种开源库
测试开发 来源:https://www.jianshu.com/p/ea6f7fb69501 Web UI测试自动化 splinter - web UI测试工具,基于selnium封装. 链接 sel ...
随机推荐
- kali linux 虚拟机克隆之后版本回退问题
今天在做虚拟机的克隆的之后发现 之前kali linux 系统内核升级后的更改全部又回退到之前的版本,也就是说之前安装的软件被删除了,现在需要自己重新安装一遍 ,(我滴个乖乖哟) 这里就不放图了.
- 使用BERT预训练模型+微调进行文本分类
本文记录使用BERT预训练模型,修改最顶层softmax层,微调几个epoch,进行文本分类任务. BERT源码 首先BERT源码来自谷歌官方tensorflow版:https://github.co ...
- suse双网卡绑定
这里使用两张网卡eth1.eth2进行 编辑/etc/sysconfig/network/ifcfg-bond0文件(此文件没有需要创建) device='bond0' BOOTPROTO='stat ...
- 【Bug档案01】Spring Boot的控制器+thymeleaf模板 -使用中出现静态资源加载路径不当的问题 -解决时间:3h
总结 - thymeleaf的模板解析规则不清楚,或者忘了; - 出现bug时,瞎调试, 没有打开NETWORK 进行查看资源的加载情况 - 控制器中的其他代码,可以先注释掉,这样就可以迅速屏蔽掉其他 ...
- 10分钟学会 linux awk命令
简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再 ...
- 虚拟机安装Linux从零到登陆成功教学
1.Linux Linux使我们出来windows以外可能接触最多的操作系统了,因为好多超级大的互联网公司,比如阿里等就是用Linux的,所以我们最起码要知道怎样去使用,使用的前提就是我们要有一个这样 ...
- margin值为负值
引用地址:http://www.cnblogs.com/2050/archive/2012/08/13/2636467.html#2457812 http://www.cnblogs.com/jsco ...
- 微信小程序WEB工具安装
1.下载工具链接:http://mp.weixin.qq.com/debug/wxadoc/dev/devtools/download.html?t=201715 2.安装完成后图片样式如图: 3.新 ...
- RMQ--树状数组,ST表,线段树
RMQ Range Minimum/Maximum Query 区间最值问题 树状数组 https://www.cnblogs.com/xenny/p/9739600.html lowbit(x) x ...
- Oracle 记录下jdbc thin client module名称
java.util.Properties props = new java.util.Properties(); props.setProperty("password",&quo ...