? ? ? ? 之前分享過點(diǎn)矢量怎么進(jìn)行投影轉(zhuǎn)換,今天跟大家分享下面矢量如何投影轉(zhuǎn)換。代碼與之前的類似,只要注意一下GDAL對矢量文件劃分的關(guān)系層次即可。
????????ogr庫是一個處理地理空間矢量數(shù)據(jù)的開源庫。它可以讀取多種數(shù)據(jù)格式,進(jìn)行地理處理、屬性表操作、數(shù)據(jù)分析等操作。目前ogr和osr庫已集成到GDAL庫中,可以對柵格數(shù)據(jù)、矢量數(shù)據(jù)進(jìn)行處理分析,被3S的研究人員廣泛應(yīng)用。感興趣的可以自己去了解一下,不懂得可以一起交流!
1.加載GDAL庫(水字?jǐn)?shù))
from osgeo import ogr, osr
2.定義目標(biāo)投影坐標(biāo)系
target_proj = osr.SpatialReference()
# 初始化osr.SpatialReference對象以形成一個合法的坐標(biāo)系統(tǒng)
target_proj.ImportFromEPSG(4326)
# 向?qū)ο笾袑懭隬GS84坐標(biāo)系統(tǒng)
3.讀取矢量中每個特征的投影信息
?????????.GetSpatialRef()函數(shù)可以獲取圖層中的坐標(biāo)系信息,注意該函數(shù)的作用空間為圖層。圖層用GetSpatialRef()獲取坐標(biāo)信息,元素用GetSpatialReference()獲取坐標(biāo)信息。
ds = ogr.Open(path)
layer = ds.GetLayer(0)
feature_count = layer.GetFeatureCount()
# 查看矢量包含多少個特征
for i in range(feature_count):
# 循環(huán)所有特征
"""spatialRef_layer = layer.GetSpatialRef()
print(spatialRef_layer)
# 圖層用GetSpatialRef()獲取坐標(biāo)信息,元素用GetSpatialReference()獲取坐標(biāo)信息"""
feature = layer.GetFeature(i)
geom = feature.GetGeometryRef()
source_proj = geom.GetSpatialReference()
# 獲取特征的原始坐標(biāo)系
4.坐標(biāo)轉(zhuǎn)換參數(shù)
????????第一個參數(shù)是數(shù)據(jù)的坐標(biāo)系,第二個參數(shù)是目標(biāo)坐標(biāo)系。
transform = osr.CoordinateTransformation(source_proj, target_proj)
# 定義坐標(biāo)系轉(zhuǎn)換參數(shù)
geom.Transform(transform)
5.完整代碼文章來源:http://www.zghlxwxcb.cn/news/detail-632886.html
# -*- coding: utf-8 -*-
"""
@Time : 2023/5/18 16:26
@Auth : RS迷途小書童
@File :Face Vector Data Projection Transform.py
@IDE :PyCharm
@Purpose :對面矢量文件進(jìn)行投影轉(zhuǎn)換
"""
from osgeo import ogr, osr
"""layer圖層才能調(diào)用投影,數(shù)據(jù)資源是不能調(diào)用投影的。矢量數(shù)據(jù)分為datasource,layer,feature三個層次"""
def Projection_Transform(path):
"""
:param path: 輸入需要投影轉(zhuǎn)換的面矢量
:return:
"""
target_proj = osr.SpatialReference()
# 初始化osr.SpatialReference對象以形成一個合法的坐標(biāo)系統(tǒng)
target_proj.ImportFromEPSG(4326)
# 向?qū)ο笾袑懭隬GS84坐標(biāo)系統(tǒng)
ds = ogr.Open(path)
layer = ds.GetLayer(0)
feature_count = layer.GetFeatureCount()
# 查看矢量包含多少個特征
for i in range(feature_count):
# 循環(huán)所有特征
"""spatialRef_layer = layer.GetSpatialRef()
print(spatialRef_layer)
# 圖層用GetSpatialRef()獲取坐標(biāo)信息,元素用GetSpatialReference()獲取坐標(biāo)信息"""
feature = layer.GetFeature(i)
geom = feature.GetGeometryRef()
source_proj = geom.GetSpatialReference()
# 獲取特征的原始坐標(biāo)系
transform = osr.CoordinateTransformation(source_proj, target_proj)
# 定義坐標(biāo)系轉(zhuǎn)換參數(shù)
geom.Transform(transform)
# print(geom.GetSpatialReference())
ds = None
del ds
if __name__ == "__main__":
input_path = 'B:/1.shp'
Projection_Transform(input_path)
????????本文章主要是分享個人在學(xué)習(xí)Python過程中寫過的一些代碼。有些部分借鑒了前人以及官網(wǎng)的教程,如有侵權(quán)請聯(lián)系作者刪除,大家有問題可以隨時留言交流,博主會及時回復(fù)。文章來源地址http://www.zghlxwxcb.cn/news/detail-632886.html
到了這里,關(guān)于【Python&GIS】面矢量數(shù)據(jù)投影轉(zhuǎn)換(WGS84轉(zhuǎn)地方坐標(biāo)系)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!