热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python与开源gis电子书_python与开源Gis书本知识点测试

#-*-coding:utf-8-*-print(upython与开源QGis课题研究组)#print(汉字)##创建矢量数据文件#try:fromosgeoimporto

# -*- 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爬虫中使用正则表达式的方法和注意事项
    本文介绍了在Python爬虫中使用正则表达式的方法和注意事项。首先解释了爬虫的四个主要步骤,并强调了正则表达式在数据处理中的重要性。然后详细介绍了正则表达式的概念和用法,包括检索、替换和过滤文本的功能。同时提到了re模块是Python内置的用于处理正则表达式的模块,并给出了使用正则表达式时需要注意的特殊字符转义和原始字符串的用法。通过本文的学习,读者可以掌握在Python爬虫中使用正则表达式的技巧和方法。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程
    本文介绍了关于人工智能、神经网络和深度学习的知识点,并提供了YOLOv7基于自己的数据集从零构建模型完整训练、推理计算的详细教程。文章还提到了郑州最低生活保障的话题。对于从事目标检测任务的人来说,YOLO是一个熟悉的模型。文章还提到了yolov4和yolov6的相关内容,以及选择模型的优化思路。 ... [详细]
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • Go GUIlxn/walk 学习3.菜单栏和工具栏的具体实现
    本文介绍了使用Go语言的GUI库lxn/walk实现菜单栏和工具栏的具体方法,包括消息窗口的产生、文件放置动作响应和提示框的应用。部分代码来自上一篇博客和lxn/walk官方示例。文章提供了学习GUI开发的实际案例和代码示例。 ... [详细]
  • web.py开发web 第八章 Formalchemy 服务端验证方法
    本文介绍了在web.py开发中使用Formalchemy进行服务端表单数据验证的方法。以User表单为例,详细说明了对各字段的验证要求,包括必填、长度限制、唯一性等。同时介绍了如何自定义验证方法来实现验证唯一性和两个密码是否相等的功能。该文提供了相关代码示例。 ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • 无损压缩算法专题——LZSS算法实现
    本文介绍了基于无损压缩算法专题的LZSS算法实现。通过Python和C两种语言的代码实现了对任意文件的压缩和解压功能。详细介绍了LZSS算法的原理和实现过程,以及代码中的注释。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 本文讨论了Kotlin中扩展函数的一些惯用用法以及其合理性。作者认为在某些情况下,定义扩展函数没有意义,但官方的编码约定支持这种方式。文章还介绍了在类之外定义扩展函数的具体用法,并讨论了避免使用扩展函数的边缘情况。作者提出了对于扩展函数的合理性的质疑,并给出了自己的反驳。最后,文章强调了在编写Kotlin代码时可以自由地使用扩展函数的重要性。 ... [详细]
  • php支持中文文件名
    2019独角兽企业重金招聘Python工程师标准大家可能遇到过上传中文文件名的文件,或者读取中文目录时不能读取,出现错误的情况这种情况是因为php自动将中文字符转成了utf8 ... [详细]
  • 基于dlib的人脸68特征点提取(眨眼张嘴检测)python版本
    文章目录引言开发环境和库流程设计张嘴和闭眼的检测引言(1)利用Dlib官方训练好的模型“shape_predictor_68_face_landmarks.dat”进行68个点标定 ... [详细]
author-avatar
兔斯基小兔子_988
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有