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



推荐阅读
  • 本文介绍如何使用阿里云的fastjson库解析包含时间戳、IP地址和参数等信息的JSON格式文本,并进行数据处理和保存。 ... [详细]
  • 根据最新发布的《互联网人才趋势报告》,尽管大量IT从业者已转向Python开发,但随着人工智能和大数据领域的迅猛发展,仍存在巨大的人才缺口。本文将详细介绍如何使用Python编写一个简单的爬虫程序,并提供完整的代码示例。 ... [详细]
  • 本文详细介绍了Java中org.neo4j.helpers.collection.Iterators.single()方法的功能、使用场景及代码示例,帮助开发者更好地理解和应用该方法。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 前言--页数多了以后需要指定到某一页(只做了功能,样式没有细调)html ... [详细]
  • 本文详细介绍了Akka中的BackoffSupervisor机制,探讨其在处理持久化失败和Actor重启时的应用。通过具体示例,展示了如何配置和使用BackoffSupervisor以实现更细粒度的异常处理。 ... [详细]
  • 使用Numpy实现无外部库依赖的双线性插值图像缩放
    本文介绍如何仅使用Numpy库,通过双线性插值方法实现图像的高效缩放,避免了对OpenCV等图像处理库的依赖。文中详细解释了算法原理,并提供了完整的代码示例。 ... [详细]
  • 本文基于刘洪波老师的《英文词根词缀精讲》,深入探讨了多个重要词根词缀的起源及其相关词汇,帮助读者更好地理解和记忆英语单词。 ... [详细]
  • 1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ... [详细]
  • 主要用了2个类来实现的,话不多说,直接看运行结果,然后在奉上源代码1.Index.javaimportjava.awt.Color;im ... [详细]
  • Python自动化处理:从Word文档提取内容并生成带水印的PDF
    本文介绍如何利用Python实现从特定网站下载Word文档,去除水印并添加自定义水印,最终将文档转换为PDF格式。该方法适用于批量处理和自动化需求。 ... [详细]
  • 本文详细解析了Python中的os和sys模块,介绍了它们的功能、常用方法及其在实际编程中的应用。 ... [详细]
  • 掌握远程执行Linux脚本和命令的技巧
    本文将详细介绍如何利用Python的Paramiko库实现远程执行Linux脚本和命令,帮助读者快速掌握这一实用技能。通过具体的示例和详尽的解释,让初学者也能轻松上手。 ... [详细]
  • 本文介绍如何使用Python进行文本处理,包括分词和生成词云图。通过整合多个文本文件、去除停用词并生成词云图,展示文本数据的可视化分析方法。 ... [详细]
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社区 版权所有