通用横轴墨卡托(UTM)是一种地图投影方法,它提供了一种为地球上的位置指定坐标的方式。像传统的经纬度系统一样,UTM也是一种水平位置表示法,这意味着它忽略了高度信息,而将地球表面视为一个理想的椭球体。然而,UTM与经纬度系统的主要区别在于,它将地球分割为60个区域,并将每个区域投影到一个平面上,作为坐标的基础。在这个系统中,位置的指定需要明确其所在的UTM区域以及在该区域内的x和y坐标。从椭球体到UTM区域的投影基于横向墨卡托投影的一系列参数,这些参数可能会因国家、地区或地图系统的不同而有所差异。
UTM系统将地球划分为60个区域,每个区域的经度跨度为6°。第一区覆盖了从西经180°到174°的地区,然后区域编号向东递增,直到第60区,覆盖东经174°到180°的地区。值得注意的是,南纬80°以南和北纬84°以北的极地区域并未纳入这个系统中。
随着接近UTM区域的边界,尺度的失真会逐渐增大。然而,在实际操作中,我们常常需要在两个相邻的区域内对一系列位置进行测量,这时使用单一的网格进行测量就显得尤为方便和必要。在大比例尺地图(如1:100,000或更大)的边界区域,制图者通常会在距离区 ...
一般获取高度数据的方法很简单。打开对应的DEM文件,按照经纬度来查询对应DEM文件的行列号,按照行列号读取DEM数据(即高度)。
以上方法是通用的获取高度的流程。
现在有这样的一个场景,我们需要查询多个地点高度。如果这些点都集中在小范围区域的话,那么我们需要下载的DEM文件大小就小。与此相反,如果这些点分布范围很大,这时候我们需要下载的DEM就非常巨大。
那有没有一种方法:不需要下载DEM直接得到对应经纬度的海拔数据呢?
答案是有的。
USGS 国家地图有一个 REST 服务,可用于查询纬度/经度坐标的海拔。
服务网址: https://apps.nationalmap.gov/epqs/
打开网址如下图所示
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2024/4/15 14:24
# @File : elevation.py
from typing import List
import requests
import urllib
import pandas as pd
def get_elevati ...
本文将介绍一种 Python 实现,该实现不借助numpy读取tif文件。
平常使用gdal和numpy就可以轻松实现读写tif文件。
假设,在不使用numpy情况下,如何去读取tif的信息呢?
首先,介绍一下什么是gdal和numpy。
gdal是什么GDAL(Geospatial Data Abstraction Library,地理空间数据抽象库)是一个开源的库,用于读取和写入栅格地理空间数据格式,它提供了一种统一的数据模型来处理这些格式的数据。GDAL支持40多种主流的栅格数据格式,包括GeoTIFF、JPEG、PNG等。
GDAL还提供了一系列的命令行工具来进行地理空间数据转换和处理。例如,gdal_translate可以用来转换栅格数据格式,gdalwarp可以用来重投影和裁剪栅格数据,gdalinfo可以用来查看栅格数据的元数据信息等。
除了栅格数据处理,GDAL的子项目OGR提供了对矢量地理空间数据格式的支持,包括ESRI Shapefiles、GeoJSON、KML等。
行业内的大型软件,如google earth、arcgis的底层都借用了大量的gdal的代码。
总 ...
本文将介绍一种 Python 实现,该实现可以在 WGS-84,GCJ-02(火星坐标系),以及 BD-09(百度坐标系)之间进行坐标转换。
坐标系简介
WGS-84 即地球坐标系,国际上通用的坐标系(设备一般包含GPS或者北斗芯片获取的经纬度为WGS84坐标–谷歌地图获取的是WGS84坐标(但是中国除外))
GCJ-02坐标系 ,即火星坐标系,有中国国家测绘局制定的地理信息系统的系统坐标。由WGS84坐标系经过加密后实现的;
BD-09坐标系 ,即百度坐标系,由GCJ-02坐标系经过加密后的坐标系
坐标系统转换情况
高德地图提供了WGS转火星坐标系的方法;
百度地图提供了WGS转百度地图的方法;
微信获取地理位置默认WGS可选择为火星坐标
同一个地点不同坐标系下的坐标
谷歌地图:39.9821199343,116.3263878498
百度地图:39.9878838520,116.3330148177
腾讯高德:39.9821328830,116.3264038577
图吧地图:39.9813033330,116.3156777777
谷歌地球:39.980833333 ...
概述因为高分三号或者其他国产SAR卫星的原始数据获取的难度非常大。所以我们使用国外的ERS影像进行研究。
本文档阐述了如何从欧洲遥感(ERS)合成孔径雷达(SAR)系统参数和未聚焦的原始数据中提取信息,并使用范围迁移图像形成算法生成聚焦图像。我们将使用NASA的阿拉斯加卫星设施(ASF)发布的ERS数据集进行演示。
以下代码均为matlab代码。
数据集下载该示例使用的ERS数据集包含地球观测卫星委员会(CEOS)标准文件,包括:ldr文件(.ldr)、零级帧数据文件(.raw)、卷描述符文件(.vol)、处理信息文件(.pi)、元数据文件(.meta)和空文件(.nul)。
ldr文件包含了处理SAR数据(.raw)所需的相关元数据信息。
零级帧数据文件(.raw)包含了处理模拟SAR信号后收集的二进制SAR信号数据(主要数据)。
卷描述符是C包含了关于处理的简短总结。
处理信息文件提供了关于辅助信息。
元数据文件是一个ASCII文件,包含了使用ASF软件工具所需的大部分元数据。
空卷目录文件是CEOS帧分发的一部分,用于终止逻辑数据卷。
使用如下代码从给定的URL下载数据集:
ou ...
python
未读有时候,你可能会听到人们问:”Python有指针吗?”答案取决于你对”指针”的定义。
指针:经典定义在许多编程语言中,指针的经典定义是一个保存其他内容地址的变量,你可以使用它来处理其他内容。在非常广泛的伪代码中,它会是这样的:
myvar = xx;
mypointer = get_address_of(myvar);
print(get_value_via_pointer(mypointer));
这种机制非常有用,因为我们可以使用指针来引用数据,在代码的一部分中设置指针,并使用我们需要的任何逻辑来决定它应该指向哪些数据。然后,我们可以在其他地方使用这个指针,而不需要知道它指向的是什么或者如何做出这个决定。指针为我们提供了一种间接方式,使我们能够分离关注点并编写更模块化的代码。
这里是一个在C语言中的例子:
int myvar = 10;
int *mypointer = &myvar;
printf("%d\n", *mypointer); // 输出: 10
在这个例子中,myvar是一个整数,mypointer是一个指向myvar的指针。我们使用&运算符获取m ...
我们现在要探索的是一个名为”area”的Python包。这个包的主要功能是计算地理多边形在地球表面的面积。为了深入理解其工作原理,我们将直接研究这个包的源代码,特别关注它是如何根据给定的经纬度来计算地理多边形的面积。这将是一个深入学习Python编程以及地理信息处理的绝佳机会。
以下是添加中文注释后的代码:
from __future__ import division # 使得除法的结果为浮点数,即使两个操作数都是整数
import json # 用于处理JSON格式的数据
from math import pi, sin # 导入数学库中的圆周率和正弦函数
__version__ = '1.1.1' # 版本信息
WGS84_RADIUS = 6378137 # 定义WGS84椭球体赤道半径,单位是米
def rad(value): # 定义一个函数,将角度转换为弧度
return value * pi / 180
def ring__area(coordinates): # 计算一个环的面积
assert isinstance(coor ...
Google earth engine(GEE)是一个非常好用的数据下载的工具。
近日在GEE下载sentinel2影像,遇到问题,现记录并解决改问题。
数据下载脚本2024年3月1日之前,下载sentinel2的脚本如下:
Map.centerObject(table,12);
function maskS2clouds(image) {
var qa = image.select('QA60');
var cloudBitMask = 1 << 10;
var cirrusBitMask = 1 << 11;
var mask = qa.bitwiseAnd(cloudBitMask).eq(0)
.and(qa.bitwiseAnd(cirrusBitMask).eq(0));
return image.updateMask(mask).divide(10000);
}
var dataset = ee.ImageCollection('COPERNICUS/S2_SR')
.fi ...
本质是输入为高程asc文件,输出为shp文件。
直接上代码:
from osgeo import gdal, ogr
import sys
def generate_contour(source, target, contour_interval=400, contour_base=10):
"""
从给定的DEM生成等高线,并保存为Shapefile格式。
参数:
source : str
DEM文件的路径。
target : str
输出Shapefile文件的路径(不包括扩展名)。
contour_interval : int, optional
等高线的间隔。
contour_base : int, optional
等高线的基准。
返回:
None
"""
# 创建Shapefile数据源
ogr_driver = ogr.GetDriverByName('ESRI Shapefile')
ogr_ ...
水深测量数据,算是一种遥感数据,只是与平常的航天航空影像数据数据的格式、形式不一样。
这是最常用的水深测量方法,特别是在大型水体(如海洋和大湖)中。声纳(SONAR)是一种利用声波在水中传播和反射的技术,通过发送声波并测量其返回时间来计算水深。多普勒效应可以用来测量海底的粗糙度和其它特性。这种方法可以生成大面积的高分辨率水深图。
这次,展示水深测量数据的可视化及ASCII文件转换为TIF文件。
数据处理过程我们的任务是
1.将ASCIIGrid格式的地形数据进行可视化。
2.将ASCIIGrid格式的地形数据转换为TIFF格式。
ASCIIGrid是一种网格数据格式,它以ASCII文本形式存储规则网格的单元格值。
以下是对这个任务的数据处理过程的详细描述:
读取ASCIIGrid格式的地形数据:首先,我们需要读取存储在ASCIIGrid格式文件中的地形数据。ASCIIGrid是一种常见的地理空间数据格式,它将地形数据存储为一个二维数组,每个元素代表一个地理位置的海拔高度。我们可以使用numpy的loadtxt函数来读取这个文件。由于ASCIIGrid文件的前几行包含了关于数据的元信息 ...