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



推荐阅读
  • 在Eclipse中批量转换Java源代码文件的编码格式从GBK到UTF-8是一项常见的需求。通过编写简单的Java代码,可以高效地实现这一任务。该方法不仅适用于Java文件,还可以用于其他类型的文本文件编码转换。具体实现可以通过导入`java.io.File`类来操作文件系统,从而完成批量转换。此外,建议在转换过程中添加异常处理机制,以确保代码的健壮性和可靠性。 ... [详细]
  • Netty框架中运用Protobuf实现高效通信协议
    在Netty框架中,通过引入Protobuf来实现高效的通信协议。为了使用Protobuf,需要先准备好环境,包括下载并安装Protobuf的代码生成器`protoc`以及相应的源码包。具体资源可从官方下载页面获取,确保版本兼容性以充分发挥其性能优势。此外,配置好开发环境后,可以通过定义`.proto`文件来自动生成Java类,从而简化数据序列化和反序列化的操作,提高通信效率。 ... [详细]
  • Python 中 json.dumps() 和 json.loads() 的使用方法详解——Python 面试与 JavaScript 面试必备知识
    在 Python 中,`json.dumps()` 和 `json.loads()` 是处理 JSON 数据的核心函数。`json.dumps()` 用于将字典或其他可序列化对象转换为 JSON 格式的字符串,而 `json.loads()` 则用于将 JSON 字符串解析为 Python 对象。本文详细介绍了这两个函数的使用方法及其在 Python 和 JavaScript 面试中的重要性,帮助读者掌握这些关键技能。 ... [详细]
  • 利用树莓派畅享落网电台音乐体验
    最近重新拾起了闲置已久的树莓派,这台小巧的开发板已经沉寂了半年多。上个月闲暇时间较多,我决定将其重新启用。恰逢落网电台进行了改版,回忆起之前在树莓派论坛上看到有人用它来播放豆瓣音乐,便萌生了同样的想法。通过一番调试,终于实现了在树莓派上流畅播放落网电台音乐的功能,带来了全新的音乐享受体验。 ... [详细]
  • 本文介绍了如何利用Apache POI库高效读取Excel文件中的数据。通过实际测试,除了分数被转换为小数存储外,其他数据均能正确读取。若在使用过程中发现任何问题,请及时留言反馈,以便我们进行更新和改进。 ... [详细]
  • 在今天的实践中,我深入学习了网页图像抓取技术,通过编写爬虫程序批量获取网站上的图片资源。具体来说,我选择了一个包含大量高质量图片的网站作为练习对象,并成功实现了将这些图片批量下载到本地存储。这一过程不仅提升了我对爬虫技术的理解,还增强了我的编程能力。 ... [详细]
  • 开发笔记:深入解析Android自定义控件——Button的72种变形技巧
    开发笔记:深入解析Android自定义控件——Button的72种变形技巧 ... [详细]
  • 本文探讨了基于点集估算图像区域的Alpha形状算法在Python中的应用。通过改进传统的Delaunay三角剖分方法,该算法能够生成更加灵活和精确的形状轮廓,避免了单纯使用Delaunay三角剖分时可能出现的过大三角形问题。这种“模糊Delaunay三角剖分”技术不仅提高了形状的准确性,还增强了对复杂图像区域的适应能力。 ... [详细]
  • Java Web开发中的JSP:三大指令、九大隐式对象与动作标签详解
    在Java Web开发中,JSP(Java Server Pages)是一种重要的技术,用于构建动态网页。本文详细介绍了JSP的三大指令、九大隐式对象以及动作标签。三大指令包括页面指令、包含指令和标签库指令,它们分别用于设置页面属性、引入其他文件和定义自定义标签。九大隐式对象则涵盖了请求、响应、会话、应用上下文等关键组件,为开发者提供了便捷的操作接口。动作标签则通过预定义的动作来简化页面逻辑,提高开发效率。这些内容对于理解和掌握JSP技术具有重要意义。 ... [详细]
  • 探索偶数次幂二项式系数的求和方法及其数学意义 ... [详细]
  • HBase Java API 进阶:过滤器详解与应用实例
    本文详细探讨了HBase 1.2.6版本中Java API的高级应用,重点介绍了过滤器的使用方法和实际案例。首先,文章对几种常见的HBase过滤器进行了概述,包括列前缀过滤器(ColumnPrefixFilter)和时间戳过滤器(TimestampsFilter)。此外,还详细讲解了分页过滤器(PageFilter)的实现原理及其在大数据查询中的应用场景。通过具体的代码示例,读者可以更好地理解和掌握这些过滤器的使用技巧,从而提高数据处理的效率和灵活性。 ... [详细]
  • 本文探讨了Android系统中支持的图像格式及其在不同版本中的兼容性问题,重点涵盖了存储、HTTP传输、相机功能以及SparseArray的应用。文章详细分析了从Android 10 (API 29) 到Android 11 的存储规范变化,并讨论了这些变化对图像处理的影响。此外,还介绍了如何通过系统升级和代码优化来解决版本兼容性问题,以确保应用程序在不同Android版本中稳定运行。 ... [详细]
  • FastDFS Nginx 扩展模块的源代码解析与技术剖析
    FastDFS Nginx 扩展模块的源代码解析与技术剖析 ... [详细]
  • 在处理遗留数据库的映射时,反向工程是一个重要的初始步骤。由于实体模式已经在数据库系统中存在,Hibernate 提供了自动化工具来简化这一过程,帮助开发人员快速生成持久化类和映射文件。通过反向工程,可以显著提高开发效率并减少手动配置的错误。此外,该工具还支持对现有数据库结构进行分析,自动生成符合 Hibernate 规范的配置文件,从而加速项目的启动和开发周期。 ... [详细]
  • 在尝试为 Unity 编译一个简单的 Java 库时,运行 `ant jar` 命令后遇到了 Java I/O 异常。具体错误信息为“无法启动程序 ${aAPT},错误代码 2”,这通常表示指定的文件或目录不存在。此问题可能是由于环境配置不正确或路径设置有误导致的。建议检查相关路径和环境变量,确保所有依赖项都已正确安装和配置。 ... [详细]
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社区 版权所有