热门标签 | 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)



推荐阅读
  • 主函数:CStringGetCPUIDString()Copyright(C)shangweixiao2011 ... [详细]
  • 超级简单加解密工具的方案和功能
    本文介绍了一个超级简单的加解密工具的方案和功能。该工具可以读取文件头,并根据特定长度进行加密,加密后将加密部分写入源文件。同时,该工具也支持解密操作。加密和解密过程是可逆的。本文还提到了一些相关的功能和使用方法,并给出了Python代码示例。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 本文讨论了Kotlin中扩展函数的一些惯用用法以及其合理性。作者认为在某些情况下,定义扩展函数没有意义,但官方的编码约定支持这种方式。文章还介绍了在类之外定义扩展函数的具体用法,并讨论了避免使用扩展函数的边缘情况。作者提出了对于扩展函数的合理性的质疑,并给出了自己的反驳。最后,文章强调了在编写Kotlin代码时可以自由地使用扩展函数的重要性。 ... [详细]
  • 怎么在PHP项目中实现一个HTTP断点续传功能发布时间:2021-01-1916:26:06来源:亿速云阅读:96作者:Le ... [详细]
  • Day2列表、字典、集合操作详解
    本文详细介绍了列表、字典、集合的操作方法,包括定义列表、访问列表元素、字符串操作、字典操作、集合操作、文件操作、字符编码与转码等内容。内容详实,适合初学者参考。 ... [详细]
  • Python爬虫中使用正则表达式的方法和注意事项
    本文介绍了在Python爬虫中使用正则表达式的方法和注意事项。首先解释了爬虫的四个主要步骤,并强调了正则表达式在数据处理中的重要性。然后详细介绍了正则表达式的概念和用法,包括检索、替换和过滤文本的功能。同时提到了re模块是Python内置的用于处理正则表达式的模块,并给出了使用正则表达式时需要注意的特殊字符转义和原始字符串的用法。通过本文的学习,读者可以掌握在Python爬虫中使用正则表达式的技巧和方法。 ... [详细]
  • iOS超签签名服务器搭建及其优劣势
    本文介绍了搭建iOS超签签名服务器的原因和优势,包括不掉签、用户可以直接安装不需要信任、体验好等。同时也提到了超签的劣势,即一个证书只能安装100个,成本较高。文章还详细介绍了超签的实现原理,包括用户请求服务器安装mobileconfig文件、服务器调用苹果接口添加udid等步骤。最后,还提到了生成mobileconfig文件和导出AppleWorldwideDeveloperRelationsCertificationAuthority证书的方法。 ... [详细]
  • IOS开发之短信发送与拨打电话的方法详解
    本文详细介绍了在IOS开发中实现短信发送和拨打电话的两种方式,一种是使用系统底层发送,虽然无法自定义短信内容和返回原应用,但是简单方便;另一种是使用第三方框架发送,需要导入MessageUI头文件,并遵守MFMessageComposeViewControllerDelegate协议,可以实现自定义短信内容和返回原应用的功能。 ... [详细]
  • 本文整理了315道Python基础题目及答案,帮助读者检验学习成果。文章介绍了学习Python的途径、Python与其他编程语言的对比、解释型和编译型编程语言的简述、Python解释器的种类和特点、位和字节的关系、以及至少5个PEP8规范。对于想要检验自己学习成果的读者,这些题目将是一个不错的选择。请注意,答案在视频中,本文不提供答案。 ... [详细]
  • Ihaveaworkfolderdirectory.我有一个工作文件夹目录。holderDir.glob(*)>holder[ProjectOne, ... [详细]
  • 本文介绍了使用kotlin实现动画效果的方法,包括上下移动、放大缩小、旋转等功能。通过代码示例演示了如何使用ObjectAnimator和AnimatorSet来实现动画效果,并提供了实现抖动效果的代码。同时还介绍了如何使用translationY和translationX来实现上下和左右移动的效果。最后还提供了一个anim_small.xml文件的代码示例,可以用来实现放大缩小的效果。 ... [详细]
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社区 版权所有