各位读者朋友们好!转眼间3月已接近尾声,感谢大家对本公众号的持续关注。本月我们围绕遥感技术开发、地理信息工具更新、编程实践与行业洞察等方向,产出了多篇干货内容。现将3月文章精华整理如下:
一、遥感技术深度解析1.[大影像处理优化]《遥感影像有效范围的矢量文件生成的改进》重磅推出分块处理方案,成功解决90G无人机影像内存溢出问题,并预告将发布开箱即用的exe工具。 1
2.[卫星数据处理]《利用葵花8气象卫星:从爬虫到视频生成》完整揭秘卫星数据下载、校正与可视化全流程,未来计划实现社交媒体自动同步。
3.[几何校正原理]《你知道吗?地球是斜着自转的!》科普地球自转轴倾斜对遥感影像的影响,强调RPC文件在几何校正中的关键作用。
二、开发工具与代码实战1.[工具升级]《RS Tool - 遥感数据处理工具 v0.0.8》新增栅格处理与矢量格式转换功能,持续打造“小而美”的跨平台开源工具。
2.[分幅处理利器]《使用GDAL库按1000x1000米格网分幅处理卫图》发布split_raster_into_tiles.exe,零配置实现大影像无缝切割。
3.[编程技巧]《用Python和GD ...
代码
import sys
import os
import subprocess
import threading
import shutil
from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QVBoxLayout, QHBoxLayout, QSpinBox
from PyQt5.QtGui import QIcon
from PyQt5.QtCore import Qt
from qfluentwidgets import (LineEdit, ComboBox, PushButton, TextEdit, BodyLabel,
MessageBox, CheckBox, IndeterminateProgressBar)
class YTDLPInterface(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitl ...
1. 项目是什么?(What is OpenFreeMap?)OpenFreeMap 是一个免费、开源的地图托管解决方案,基于 OpenStreetMap (OSM) 数据。它允许你在网站或应用程序中显示自定义样式的地图。你可以选择自己托管(self-host)或者直接使用他们提供的公共实例。
核心特点:
完全免费,没有地图浏览次数或请求次数限制。
无需注册、API 密钥或 cookies,隐私友好。
开源,不搞“开放核心”(open-core)那一套,所有代码和生产环境配置都公开。
提供每周更新的全球地图数据下载(Btrfs 和 MBTiles 格式)。
通过捐款维持公共实例的运营。
目标: 为开发者提供一个高质量的矢量瓦片(vector-tile)托管方案,利用现有工具(比如 OpenStreetMap、Planetiler、MapLibre 等),无需自己从头开发复杂的地图服务。
2. 它能做什么?不能做什么?(Scope and Limitations)能做什么:
显示基于 OpenStreetMap 数据的自定义样式地图。
提供生产级别的瓦片托管(tile ho ...
面矢量转线矢量,当然可以在arcgis上进行,只是速度实在是太慢了。
除了慢之外,还有一个很严重的问题,那就是属性字段丢失。
面矢量的属性字段如下:
在arcgis转换后的线矢量的字段如下:
使用ogr而开发的面矢量转换线矢量则不存在这个问题。对于同一个面矢量文件,arcgis需要2分钟的处理时间,而我们写的代码进行面线转换只需要10秒。这个效率提升是非常惊人的。
我使用的arcgis版本是老版本,10.2. 对于arcgis pro,我没有去测试。
现在,详细讲一讲这个过程。
在自然资源调查项目中,张工遇到了一个棘手的问题:他需要将20万亩农田的矢量面数据转换为边界线,用于后续的田埂路径分析。但当使用常规GIS软件的导出边界功能时,发现带洞的多边形(如果园中的蓄水池区域)总是处理失败,属性信息也丢失严重。这个案例暴露出GIS数据处理中一个常见痛点——如何实现精准的面转线转换?
一、面转线需求背后的技术挑战在国土调查、城市规划、农业遥感等领域,面转线操作存在三大共性需求:
拓扑关系维护:保持相邻多边形的公共边界完全重合
属性继承:保留原始面要素的编号、类型等属性信息
复杂 ...
使用 Nginx/Apache 专业部署
安装 Nginx:
sudo apt update && sudo apt install nginx
2.
创建配置文件 /etc/nginx/sites-available/video:
server {
listen 80;
server_name http://129.204.22.103/;
location / {
root /home/ubuntu/code/h8/video;
autoindex on; # 开启目录列表
# 添加视频流支持(调整浏览器缓存)
location ~ \.(mp4|webm|mov)$ {
add_header Cache-Control "no-store";
add_header X-Content-Type-Options "nosniff";
expires 0;
}
...
概述最近一位小伙伴私信我,说他在处理卫星影像时遇到一个需求:需要将大范围的栅格影像按固定网格(比如 1000x1000 米)分割成小块瓦片,确保接边无缝,还要保存为 PNG 格式方便查看。他希望有一个简单易用的工具,最好不用装一堆环境。于是,我写了一个 Python 脚本 split_raster_into_tiles.py,用 GDAL 实现了这个功能,并用 Pyinstaller 打包成了一个独立的 .exe 文件。这篇文章就来介绍一下这个工具的用法,希望能帮到有类似需求的朋友!
需求背景小伙伴的需求很明确:输入:一张大范围的卫星影像(比如 TIFF 格式)。处理:按 1000x1000 米网格分割,边缘无缝对接。输出:生成多个小瓦片,保存为 PNG 格式(方便查看),同时保留地理信息。额外要求:最好是个独立程序,不用折腾 。
基于这个需求,我开发了 split_raster_into_tiles.py,并用 Pyinstaller 打包成了 split_raster_into_tiles.exe。下面就来详细介绍怎么用它。
功能简介split_raster_into_tiles. ...
概述论文提出了SAM-Road,一种基于Segment Anything Model(SAM)改进的算法,用于从卫星图像中高效、高精度地提取大规模矢量化道路网络图。该方法在几何形状和拓扑结构的联合建模上实现了创新,无需复杂后处理,显著提升了速度与准确性。
网络结构分析SAMRoad是项目核心模型,基于PyTorch Lightning框架构建。网络结构主要包含三个部分:1 SAM的ViT图像编码器提取特征;
2 自定义卷积解码器生成道路/交叉口掩膜;
3 拓扑网络TopoNet预测节点连接性。
训练时结合双线性采样和Transformer处理空间关系,配置文件控制不同版本的ViT模型和训练参数。
SAMRoad网络结构解析(适合初学者):
特征提取层 :
采用SAM预训练的ViT模型(支持B/L/H三种规模)
输入256/512/1024尺寸的遥感图像
输出256维的特征图(保持1/16原图分辨率)
掩膜预测层 :
4级转置卷积构成解码器(128→64→32→2通道)
每层包含LayerNorm和GELU激活
最终输出道路/交叉口二值掩膜
拓扑推理层 :
双线性采样器 ...
from osgeo import ogr
# 打开SHP文件
driver = ogr.GetDriverByName("ESRI Shapefile")
data_source = driver.Open("example.shp", 1)
layer = data_source.GetLayer()
OGR Layer 常用方法手册
图层信息获取
# 获取图层名称
print(layer.GetName())
# 获取要素总数
count = layer.GetFeatureCount()
# 获取地理范围(minX, maxX, minY, maxY)
extent = layer.GetExtent()
# 获取空间参考坐标系
spatial_ref = layer.GetSpatialRef()
print(spatial_ref.ExportToWkt())
# 获取字段定义
layer_defn = layer.GetLayerDefn()
for i in range(layer_defn.GetFieldCount()):
field_defn ...
大家好!今天我要和大家聊聊一个我写的代码——create_unique_segment_field 函数。
这是一个用 Python 和 GDAL(一个强大的地理空间数据处理库)编写的函数,专门用来给 Shapefile(一种常见的地理信息系统文件格式,简称 SHP 文件)中的某个字段创建“唯一值分段”。
如果你对编程或者 GIS(地理信息系统)不太熟悉,别担心,我会尽量用大白话一步步讲解这个函数的来龙去脉,以及它背后的技术思路。
为什么要写这个函数?故事得从我的一个实际需求说起。有一天,我拿到了一份土地使用数据的 SHP 文件,里面有个字段叫 TYPE,记录了不同的土地类型,比如“农田”、“森林”、“建筑用地”等等。
我想把这些类型变成数字编号,比如“农田”是 1,“森林”是 2,“建筑用地”是 3,方便后续在分析软件里做统计或者可视化。
手动改?太累了!这份数据有几千条记录,手动处理不仅费时间,还容易出错。于是,我决定写一个自动化工具来解决这个问题。
这个需求听起来简单,但实际操作时有几个挑战:
数据不规则:字段里的值可能是字符串、数字,甚至还有空值,怎么统一处理?
效率问题:如果 ...