首页WIN11问题中国国家级气象站站点分布

中国国家级气象站站点分布

时间2022-11-09 00:00:06发布分享专员分类WIN11问题浏览55

一、中国2421个国家级气象观测站点空间分布

中国国家级气象站站点分布

下载网站的原始文件初始化失败 ,得到一个station-wgs的压缩包

解压之后通过QGIS打开shp文件

中国国家级气象站站点分布

中国国家级气象站站点分布

就可以看到站点的空间分布情况

打开属性初始化失败 ,即可看到站点的数据属性

二、使用python处理上述的shp文件初始化失败 ,生成csv和json格式

# -*- coding: utf-8 -*-

import csv

import json

try:

from osgeo import gdal

from osgeo import ogr

from osgeo import osr

except ImportError:

import gdal

import ogr

import osr

# 读shp文件

def readShp():

# 支持中文路径

gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8", "YES")

# 支持中文编码

gdal.SetConfigOption("SHAPE_ENCODING", "GBK")

# 注册所有的驱动

ogr.RegisterAll()

# 打开数据

ds = ogr.Open("./station/stations-geo.shp", 0)

if ds is None:

return "打开文件失败初始化失败 !"

# 获取数据源中的图层个数初始化失败 ,shp数据图层只有一个,gdb、dxf会有多个

layer_count = ds.GetLayerCount()

print("图层个数 = ", layer_count)

# 获取第一个图层

layer = ds.GetLayerByIndex(0)

if layer == None:

return "获取图层失败初始化失败 !"

# 对图层进行初始化

layer.ResetReading()

# 输出图层中的要素个数

num = layer.GetFeatureCount(0)

print("要素个数 = ", num)

print("属性表结构信息:")

attrs = []

lydefn = layer.GetLayerDefn()

iFieldCount = lydefn.GetFieldCount()

for iAttr in range(iFieldCount):

oField = lydefn.GetFieldDefn(iAttr)

attrs.append(oField.GetNameRef())

print("%s: %s(%d.%d)" % (

oField.GetNameRef(),

oField.GetFieldTypeName(oField.GetType()),

oField.GetWidth(),

oField.GetPrecision()))

result_list = []

# 获取要素

for i in range(num):

ofeature = layer.GetFeature(i)

data = {}

for j in attrs:

data.setdefault(j, ofeature.GetFieldAsString(j))

for key in data:

if key != 'sheng' and key != 'name' and key != 'type' and key != 'memo':

data[key] = eval(data[key])

if key == 'NO':

data[key] = int(data[key])

elif key == 'stationid':

data[key] = int(data[key])

result_list.append(data)

ds.Destroy()

del ds

print(result_list)

new_s = sorted(result_list, key=lambda e: e.__getitem__('NO'))

f = open('test1.csv', 'w', encoding='utf8', newline='') # 指定newline=‘’参数

writer = csv.DictWriter(f, fieldnames=data.keys())

writer.writeheader() # 将字段写入csv格式文件首行

for line in new_s:

writer.writerow(line)

with open("test1.json", 'w', encoding="utf-8") as f:

json.dump(new_s, f, ensure_ascii=False)

return result_list

readShp()

得到原始文件的csv和json格式

数据来源请引用:地理遥感生态网科学数据注册与出版系统

爱资源吧版权声明:以上文中内容来自网络,如有侵权请联系删除,谢谢。

Array初始化失败
蓝墙互联Julius——合作开发项目一体化数字管理平台 不求人系列干货~万能快捷键,了解一下