本文主要针对通过python获取高程数据asc文件中的经纬度信息
实现思路,通过解析asc将其转换为tif,处理tif最终获取最大最小经纬度,用于获取地图边界。
asc文件

python代码

# coding UTF-8
# author:ablue
import json
import sys
import os
# 支持中文
from pylab import *
from osgeo import osr, gdalascInfo = []# ascdir asc文件目录
# parseFile 需要解析的文件
def ascii2tif(ascdir: str,parseFile: str
) -> None:# (1) 创建输出文件夹outpath = ascdir + '\TiffFile'# (2) 格式转换ascii_file_folder, ascii_file_name = os.path.split(parseFile)# 输出文件tif_file_path = outpath + '\\' + ascii_file_name.replace('.asc', '.tif')with open(parseFile, 'r') as f:lines = f.readlines()count = 0for line in lines:if count <= 4:ascInfo.append(re.findall("\d+\.?\d*", line))count += 1# 打开ascii文件ds_in = gdal.Open(parseFile)gtiff_driver = gdal.GetDriverByName('GTiff')  # 启动Gtiff驱动ds_out = gtiff_driver.CreateCopy(tif_file_path, ds_in)srs = osr.SpatialReference()srs.ImportFromEPSG(4326)ds_out.SetProjection(srs.ExportToWkt())ds_in = Noneds_out = Nonegtiff_driver = None  # 关闭驱动return tif_file_pathdef saveAreaJson(tif_path):dataset = gdal.Open(tif_path)  # 打开tif# 获取行数列数和地理信息# geo_information(0) :左上像素左上角的x坐标。# geo_information(1):w - e像素分辨率 / 像素宽度。# geo_information(2):行旋转(通常为零)。# geo_information(3):左上像素左上角的y坐标。# geo_information(4):列旋转(通常为零)。# geo_information(5):n - s像素分辨率 / 像素高度(北半球上图像为负值)geo_information = dataset.GetGeoTransform()col = dataset.RasterXSize  # 438row = dataset.RasterYSize  # 671band = dataset.RasterCountdem = dataset.GetRasterBand(1).ReadAsArray()# 获取行列数,对应其经纬度,j对于x坐标cols = []maxLon = 0maxLat = 0for y in range(row):  # 行for x in range(col):  # 列# 有效高程if dem[y][x] > 0:# 输出经纬度lon = geo_information[0] + x * geo_information[1] + y * geo_information[2]lat = geo_information[3] + x * geo_information[4] + y * geo_information[5]if lon != None:child = [lon, lat]cols.append(child)if lon > maxLon:maxLon = lonif lat > maxLat:maxLat = latminLon = cols[0][0]minLat = cols[0][1]for col in cols:lon = col[0]lat = col[1]if lon < minLon:minLon = lonif lat < minLat:minLat = latareaJson = {"centerLon": ascInfo[2][0],"centerLat": ascInfo[3][0],"minLon": str(minLon),"minLat": str(minLat),"maxLon": str(maxLon),"maxLat": str(maxLat)}print("_end", areaJson)# 输出的json文件与tif同目录with open(tif_path + '.json', 'w', encoding='utf-8') as outfile:json.dump(areaJson, outfile, ensure_ascii=False)if __name__ == "__main__":# 将asc转换成tif文件  1.目录 2.文件tif_path = ascii2tif(r"E:\project\ASC", r"E:\project\ASC\xx.asc")# 通过外部参数传递# tifPath = ascii2tif(sys.argv[1], sys.argv[2])# 解析tif文件并输出jsonsaveAreaJson(tif_path)

解析高程数据asc文件相关推荐

  1. Python解析VOC数据标签文件

    导读 在目标检测数据集中我们经常会使用到VOC格式的数据,这篇文章就向大家介绍一下如何来解析xml标签文件的数据 xml数据 <annotation><folder>/root ...

  2. 基于流式输入输出 使用Java借助GSON库 实现对大型asc文件的读入解析 并输出为JSON文件

    基于流式输入输出 使用Java借助GSON库 实现对大型asc文件的读入解析 并输出为JSON文件 致谢 1 为什么要使用流式输入输出(使用情景) 2 目标.主要思路及相关方法 2.1 目标 2.2 ...

  3. Python解析CANoe录制的blf文件asc文件通用方法

    Python解析CANoe录制的blf文件&asc文件通用方法 一.背景     由于很多时候我们在录制日志文件的时候更愿意选择BLF文件,至少目前我见到的很多公司都是使用的BLF文件来作为最 ...

  4. Python解析CANoe录制的asc文件

    Python解析CANoe录制的asc文件 一.背景     由于很多时候我们需要单纯分析一些报文数据,筛选或者一些故障报文,这个时候,用CANoe打开太占用设备了,而且只能过滤到某一帧报文,当我们能 ...

  5. pandas使用read_csv函数读取文件并解析日期数据列(parse dates)、pandas使用read_csv函数读取文件并将缺失值转化为空字符串

    pandas使用read_csv函数读取文件并解析日期数据列(parse dates).pandas使用read_csv函数读取文件并将缺失值转化为空字符串 目录

  6. 利用js-xlsx.js插件实现Excel文件导入并解析Excel数据成json数据格式

    <!--本文转载于网络,有太多一样的文章,不知道原作者是哪位了,就不注明出处了.这里记载下来,用于自己的学习借鉴--><!DOCTYPE html><html lang= ...

  7. wps解析json数据_浏览器处理2500MB JSON文件的解析与绘图问题(实践分享,非战斗人员请忽略)...

    最近在做一个浏览器画数据图的任务. 任务其实很简单,浏览器通过ajax请求拿到服务端已经生成好的json文件,然后在前端浏览器绘制相应的折线图,饼状图等. 很丑陋的dataflow 起初我的做法 le ...

  8. python 读取excel格式xml,读取xml格式的xls文件、解析其中数据

    1.python 读取excel格式xml,解析其中数据 当excel文件的格式是xml的时候,window系统是可以正常打开的,但是使用pandas直接读取则会报错,原因就是现在已经是xml文件了, ...

  9. 后缀名为.cpa文件结尾的数据包文件解析

    首先明确一下cap包的内容 cap包为通过抓包软件保存下来的数据包文件,不同的抓包软件保存下来的cap包格式也有很大差异,从最开始的4个字节便可以看出,如下列出不同抓包软件的cap包文件前4字节的差异 ...

最新文章

  1. 基于zookeeper的solrCloud集群搭建
  2. OpenAI机械手单手轻松解魔方,背靠强化学习+新技术ADR
  3. 计算机操作系统第四版习题答案 第一章简答题
  4. 俄罗斯黑客收到500万美元赎金!美国燃油管道商认怂,民众为抢汽油大打出手...
  5. python 两阶段聚类_使用Python进行层次聚类
  6. Spring 3.1 Environment Profiles--转载
  7. 介绍一个免费的采用人工智能放大老照片的在线网站
  8. [luogu 4292][bzoj 1758][WC2010] 重建计划(点分治 + dp + 单调队列优化 + 启发式合并)
  9. kafka服务器死机消息,当kafka集群其中一台宕机后,会怎么样?
  10. 计算机考研英语有听力吗,考研英语有听力吗
  11. layui分页只能显示一页数据_分页显示查询数据
  12. Spring笔记2——Spring中Bean的装配
  13. java根据父类找子类_在java中实现多态时,可以通过父类变量引用子类的对象。_学小易找答案...
  14. 基于MATLAB的车牌识别(GUI)
  15. 【STM32f401学习之路-02】USART串口通信
  16. AWS SAA 认证考试心得
  17. Body estimation 代码复现之:结合 keras 对 Stack Hourglass 网络架构分析(全网最详细分析)
  18. 选购羽毛球拍的初级知识
  19. 大象跳转:解析微信内自动跳转浏览器打开URL网页的操作步骤
  20. 太原市山大附中2021年高考成绩查询,太原高中排名及分数线,2021太原市高中排名榜最新...

热门文章

  1. Testbench编写指南(1)基本组成与示例
  2. [学习笔记]韩顺平-快速学习github -github教程 github视频 github入门
  3. Socket简单学习之UDP通信
  4. 接口测试工具postMan、soapUI百度网盘下载以及简单使用
  5. 《java与模式》读书笔记
  6. 本地mysql数据库安装
  7. 支持批量转换的全能pdf转换器
  8. Vc 界面编程常用方法
  9. unity ParticleSystem 实现序列帧动画效果(一)
  10. java sql 练习