1. 程式人生 > >GDAL python讀取shp進行影像投影座標和地理座標的轉換

GDAL python讀取shp進行影像投影座標和地理座標的轉換

之前只在網上找到了使用gdal進行tif格式影像的投影座標與地理座標轉換的程式碼,但沒有專門針對shp格式的資料的教程。正巧現在需要用mongodb做向量入庫,建立空間索引(2dshere)時必須用經緯度而不是投影座標,就參考別人的程式碼做了一些修改,實現了shp的投影座標轉地理座標。

from osgeo import gdal
from osgeo import osr
from osgeo import ogr

#輸入為待操作shp的路徑,和一組待轉換的投影座標
def prj2geo(path,x,y):
    # 為了支援中文路徑,請新增下面這句程式碼
    gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8"
, "NO") # 為了使屬性表字段支援中文,請新增下面這句 gdal.SetConfigOption("SHAPE_ENCODING", "") # 註冊所有的驅動 ogr.RegisterAll() # 資料格式的驅動 driver = ogr.GetDriverByName('ESRI Shapefile') ds = driver.Open(path); layer0 = ds_simple.GetLayerByIndex(0); #或取到shp的投影座標系資訊 prosrs = layer0.GetSpatialRef() geosrs = osr.SpatialReference() #設定輸出座標系為WGS84
geosrs.SetWellKnownGeogCS("WGS84") ct = osr.CoordinateTransformation(prosrs, geosrs) coords = ct.TransformPoint(x, y) #輸出為轉換好的經緯度 return coords[:2]

相關推薦

GDAL python讀取shp進行影像投影座標地理座標轉換

之前只在網上找到了使用gdal進行tif格式影像的投影座標與地理座標轉換的程式碼,但沒有專門針對shp格式的資料的教程。正巧現在需要用mongodb做向量入庫,建立空間索引(2dshere)時必須用經緯度而不是投影座標,就參考別人的程式碼做了一些修改,實現了sh

關於Arcgis投影座標地理座標問題總結

作為一個八年的gis老鐵,不敢說自己的gis有多麼厲害,但是每次一到地理投影和什麼座標投影就各種頭疼,最近又遇到這個問題,下定決心搞明白。地理座標就是我們經常說的經緯度座標,具體的地理位置。而投影座標則是將地球怎麼切開投影到平面上的問題。這其中大家經常混淆的就是定義投影和柵格

ArcGIS柵格影像怎麼從WGS84地理座標轉成Xian80投影座標

事情是這樣的,我下載了一個WGS84座標系的影像圖,需要載入到Xian80投影座標系下,所以需要對影像圖進行座標系的轉換 1、因為涉及到兩個參考橢球的問題,首先需要計算七引數,如何計算七引數,請參考我之前的一篇文章 https://www.cnblogs.com/yiliangmi/p/9897435.h

GDAL C#讀取shp中文屬性值亂碼問題

GDAL的C#版本讀取shp中,如果屬性值中含有中文,讀出來有可能是亂碼的問題,根據SWIG生成的C#程式碼除錯發現問題所在,在Ogr.cs檔案中有這麼一個函式,程式碼如下: internal static string Utf8BytesToString(IntPtr pNat

python讀取excel進行遍歷/xlrd模組

#!/usr/bin/env python # -*- coding: utf-8 -*- import csv import xlrd import xlwt def handler_excel(

Altium怎麼匯出座標利用座標快速佈局教程

器件的座標其實在我們處理佈局的時候,非常有用,例如A板佈局匯入B板。 在A板PCB中執行選單命令“File-Assembly-Generates Pick and Place File”對器件的座標進行匯出。如圖31所示,注意選擇選擇匯出格式和單位。 B板PCB中把所

UE4_第一人稱模版引發的世界座標區域性座標的思考

由第一人稱射擊模板引發的思考: 添加了一個子彈的發射位置Scene,這時候區域性座標的x軸和世界座標的x軸不在同一個方向,產生射線的時候 即便使用如下的節點,產生的射線的forwardVector也是以區域性座標系的x軸為準。 由此就導致了所謂的bug。 (下圖演示了局部座標系和世界

邏輯座標裝置座標的區別

如果我們想製作一個擁有滾動條的應用程式,那就只需要讓你的view類派生自CScrollView類即可,CScrollView類派生自CView類!在初始化view的時候,函式會呼叫CXXView類的OnInitialUpdate()函式(XX表示你的工程名)!函式如下:vo

PIE SDK螢幕座標地圖座標轉換

  1. 功能簡介     螢幕座標和地圖座標轉換,就是字面意思,將電腦螢幕的座標轉換為帶有空間資訊的地圖座標,主要運用PIE SDK地圖控制元件的ToMapPoint()方法,而地圖座標轉換為裝置座標(螢幕),用的是FromMapPoint()方法。 2.功能實現說明

MFC中關於裝置(螢幕)座標邏輯座標

裝置座標(Device Coordinate)又稱為物理座標(Physical Coordinate),是指輸出裝置上的座標。通常將螢幕上的裝置座標稱為螢幕座標。裝置座標用物件距離視窗左上角的水平距離和垂直距離來指定物件的位置,是以畫素為單位來表示的,裝置座標的X軸向右為正

utm座標經緯度相互轉換

專案中用到經緯度相互轉換,自己寫感覺太麻煩,查詢後發現利用geos和proj4可以完成座標轉換,現在記錄一下方便以後自己查詢。 //經緯度轉utm座標 int convert_lo

HTML 滑鼠座標元素座標

在這一篇文章中,將會介紹滑鼠座標、元素座標以及滑鼠在指定元素內的座標。 1. 滑鼠座標 在觸發滑鼠相關事件時(如:click、mousemove),可以通過事件物件獲取當前滑鼠的座標。 獲取的座標可分為2種: 1) MouseEvent.screenX、MouseEvent.screenY :基於

簡單談視口座標視窗座標

視口和視窗座標在GDI中是有這個概念的,正常情況下,這兩個座標一致,即它們的原點和寬高都是相同的,但是我們可以修改這兩個座標系統來簡單快速實現一些變換操作,如縮放等,首先就必須要理解這兩個座標的概念了,簡答說一句話,即:視口座標(物理座標)的高度寬度是確定顯示區域的,而視窗座

html5 canvas學習--移動座標旋轉座標

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <script type="text/javascr

根據excellent 自動生成table ,通過輸入開始座標結束座標

自動生成excell的 position 使用場景 使用頁面生成,excell大量單元格,成千上百的量。如果量小就沒必要使用。 要做Excell的table,而且要顯示值,通過給td標籤,新增一個pos

滑鼠事件座標獲取(視窗座標螢幕座標)

本文主要介紹重寫自帶的一些方法,拾取螢幕和視窗座標資訊 效果如下: 分析: 定時服務:在固定一段時間後執行相關的函式方法,例如這裡表示的是在0秒後執行self.giveHelp這個方法 QTimer.singleShot(0, s

Qt全域性座標相對座標

QMouseEvent中兩類座標系統,一類是視窗座標,一類是顯示器座標。1、QPoint QMouseEvent::pos()       這個只是返回相對這個widget(過載了QMouseEvent的widget)的位置。       const Returns the position of the m

簡單的頂點著色(根據模型座標世界座標位置)

Shader "Custom/test1" { SubShader { pass { CGPROGRAM #pr

地圖座標頁面座標轉換應用

 private void axMapControl1_OnMouseMove(object sender, IMapControlEvents2_OnMouseMoveEvent e)         {             IActiveView m_activev

unity中世界座標絕對座標之間的轉換

public class TEST : MonoBehaviour { void Start () { Debug.Log(transform.position); } // Update is called o