投影变换

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import os

try:
import ogr
import osr

except ImportError:
from osgeo import ogr, osr

shp_driver = ogr.GetDriverByName(‘ESRI Shapefile‘)

# input SpatialReference
input_srs = osr.SpatialReference()
input_srs.ImportFromEPSG(4326)

# output SpatialReference
output_srs = osr.SpatialReference()
output_srs.ImportFromEPSG(3857)

# create the CoordinateTransformation
coord_trans = osr.CoordinateTransformation(input_srs, output_srs)

# get the input layer
input_shp = shp_driver.Open(r‘../geodata/UTM_Zone_Boundaries.shp‘)
in_shp_layer = input_shp.GetLayer()

# create the output layer
output_shp_file = r‘../geodata/UTM_Zone_Boundaries_3857.shp‘
# check if output file exists if yes delete it
if os.path.exists(output_shp_file):
shp_driver.DeleteDataSource(output_shp_file)

# create a new Shapefile object
output_shp_dataset = shp_driver.CreateDataSource(output_shp_file)

# create a new layer in output Shapefile and define its geometry type
output_shp_layer = output_shp_dataset.CreateLayer("UTM_Zone_Boundaries_3857", geom_type=ogr.wkbMultiPolygon)

# add fields to the new output Shapefile
# get list of attribute fields
# create new fields for output
in_layer_def = in_shp_layer.GetLayerDefn()
for i in range(0, in_layer_def.GetFieldCount()):
field_def = in_layer_def.GetFieldDefn(i)
output_shp_layer.CreateField(field_def)

# get the output layer‘s feature definition
output_layer_def = output_shp_layer.GetLayerDefn()

# loop through the input features
in_feature = in_shp_layer.GetNextFeature()
while in_feature:
# get the input geometry
geom = in_feature.GetGeometryRef()
# reproject the geometry
geom.Transform(coord_trans)
# create a new feature
output_feature = ogr.Feature(output_layer_def)
# set the geometry and attribute
output_feature.SetGeometry(geom)
for i in range(0, output_layer_def.GetFieldCount()):
output_feature.SetField(output_layer_def.GetFieldDefn(i).GetNameRef(), in_feature.GetField(i))
# add the feature to the shapefile
output_shp_layer.CreateFeature(output_feature)
# destroy the features and get the next input feature
output_feature.Destroy()
in_feature.Destroy()
in_feature = in_shp_layer.GetNextFeature()

# close the shapefiles
input_shp.Destroy()
output_shp_dataset.Destroy()

spatialRef = osr.SpatialReference()
spatialRef.ImportFromEPSG(3857)

spatialRef.MorphToESRI()
prj_file = open(‘UTM_Zone_Boundaries.prj‘, ‘w‘)
prj_file.write(spatialRef.ExportToWkt())
prj_file.close()

时间: 2024-10-27 09:13:39

投影变换的相关文章

SharpGL学习笔记(三) 投影变换和视点变换

从本节开始,我们使用SharpGL带的VS2010扩展,来直接生成SharpGL工程. 如果你新建项目时,没有看到下面的SharpGL项目,那么请事先在SharpGL源代码中找到一个叫 ”SharpGL 2.0 Visual Studio Extension“目录 ,安装名为 SharpGL.vsix的vs2010扩展, 然后重启你的vs2010. 利用上面的SharpGL项目,直接生成一个完整的SharpGL工程,它带有Opengl窗体控件,基本代码已经都完成了, 你只需要修改3D绘图部分的代

[翻译]投影变换 Projection Transform (Direct3D 9)

你可以认为投影变换就是控制摄像机内部的一种方式.他可以类推为为摄像机选择一个漏字板.它是三种变换中最难懂的.本文只讨论以下的一些内容. 典型的投影变换就是缩放和透视投影.投影就变换把视椎转化为一个立方体.近大远小.这就是把透视应用于场景. 在视椎体中,摄像机与变换空间原点的距离被定义为D,所以投景矩阵看起来像这样: 观察矩阵把摄像机通过把z轴-D 平移到原点.平移矩阵如下 他们两个矩阵相乘得到以下矩阵 透视转换把视椎体转化为新的一个坐标空间.注意视堆平截变为一个立方体,原点炎右上角移动到场景的中

10分钟入门opengl投影变换推导(内含mathjax公式)

*/ pre code { display: block; padding: 0.5em; color: #333; background: #f8f8ff } pre .comment, pre .template_comment, pre .diff .header, pre .javadoc { color: #998; font-style: italic } pre .keyword, pre .css .rule .keyword, pre .winutils, pre .javas

坐标系、坐标参照系、坐标变换、投影变换

在<地图投影为什么>一文,我大略说了下为什么需要地图投影,投影坐标系需要哪些参数,这些参数(如椭球体.基准等)是做什么的.这篇就深入的谈些地图投影相关的一些概念,各种定义参考OGC标准<Spatial Reference by Coordinates>.进一步的话会介绍下开源投影库和商业软件投影相关的知识. 坐标系(coordinate system.CS):由两个.三个甚至更多个坐标轴,单位标度等组成,使得可利用数学法则计算距离.角度或其他几何元素.如坐标轴相互垂直的笛卡尔(Ca

OpenGl学习笔记3之模型变换、视图变换、投影变换、视口变换介绍

模型变换.视图变换.投影变换.视口变换介绍 opengl中存在四种变换,分别是模型变换,视图变换,投影变换,视口变换.这四种变换是图形渲染的基本操作,实质上这四种变换都是由矩阵乘法表示(这些操作都是由一个4*4的矩阵来完成的),通过变换,我们可以看到各种通的显示效果,最简单的效果就是让图元沿着某个方向变换(放大,缩小,翻转等)或者对所要显示的图元进行裁剪.接下来我们就详细介绍这四种变换以及相互之间的联系. 我们要在屏幕上显示一个具有三维坐标的物体,大致需要以下步骤: 1.     进行模型,视图

gis基本概念之&quot;投影变换&quot;-浅谈

目录 1,概述 概述 因为GIS描述的是位于地球表面的信息,所以根据地球椭球体建立的地理坐标(经纬网)可以作为空间数据的参照系统.而地球是一个不规则的球体,为了能够将其表面的内容显示在平面的显示器或纸面上,就必须将球面的地理坐标系统变换成平面的投影坐标系统(图4.1) 常用的投影方法有: 正解变换:  通过建立一种投影变换为另一种投影的严密或近似的解析关系式,直接由一种投影的数字化坐标x.y变换到另一种投影的直角坐标X.Y. 反解变换:  即由一种投影的坐标反解出地理坐标(x.y→B.L),然后

OpenGL的视图变换、模型变换、投影变换、视口变换

产生目标场景的过程类似于用照相机进行拍照: (1) 把照相机固定在三角架上,并让他对准场景从不同位置观察场景(视图变换) gluLookAt (2) 对场景进行安排,使各个物体在照片中的位置是我们所希望的 移动,旋转或者放大缩小场景中的物体(模型变换) glTranslate* ,glRotate* ,glScale* (3) 选择照相机镜头,并调整放大倍数(调焦) 显示物体时,可以选择物体是如何投影到屏幕上(投影变换) glFrustum , gluPerspective , glOrtho

(转)坐标系统与投影变换及在ARCGIS中的应用

坐标系统与投影变换及在ARCGIS中的应用 概述: 本文共可分为如下几个部分组成: 地球椭球体(Ellipsoid) 大地基准面(Geodetic datum) 投影坐标系统(Projected Coordinate Systems ) 坐标系统和投影变换在桌面产品中的应用 一.World files文件 GIS处 理的是空间信息,而所有对空间信息的量算都是基于某个坐标系统的,因此GIS中坐标系统的定义是GIS系统的基础,正确理解GIS中的坐标系统就变得尤为 重要.坐标系统又可分为两大类:地理坐

《Hive编程指南》14.3 投影变换的实践出错原因分析

自己在学习14.3节投影变换执行SQL语句hive (default)> SELECT TRANSFORM(col1, col2) USING '/bin/cut -f1' AS newA, newB FROM a;时出现了这个错误 Ended Job = job_local1231989520_0004 with errors Error during job, obtaining debugging information... FAILED: Execution Error, return

三维图像投影变换——平行投影

(2)平行投影 [太阳光线产生的投影为平行投影] 如果把透视[投影的中心]移至[无穷远处],则各[投影线]成为[相互平行]的直线,这种投影法称为平行投影. 平行投影可以根据投影方向与投影面的夹角分成两类:正投影和斜投影1>正投影根据投影面与坐标轴的[夹角]又可分为:三视图和正轴侧图当投影面与某一坐标轴[垂直]时,得到的投影为三视图,投影方向和这个坐标轴的方向一致:否则得到的投影为正轴侧图. 『1』.三视图 1.主视图-->XOZ面(也称为V面)为投影面 由投影变换前后三维物体上点到主视图点的关