python
未读大家好,我是小白。今天这篇文章就来讲一讲如何把自己写的.py 文件做成全局可用的本地库。
一、核心原理:Python 模块搜索机制在开始之前,先了解下 Python 的模块搜索规则:当你执行import module_name时,Python 会按以下顺序查找模块:
内置模块(如sys、os等)
sys.path列表中的目录(包括当前脚本目录、PYTHONPATH 环境变量指定目录、Python 安装目录下的 site-packages 等)
如果找不到,就会抛出ModuleNotFoundError
我们的目标就是把自己的模块所在路径添加到 Python 的搜索路径中,或者直接放到它本来就会搜索的目录里。
二、方案一:简单粗暴 —— 直接放入 site-packages(适合快速测试)这是最直接的方法,适合临时测试或简单脚本的复用,原理就是把你的模块放到 Python 默认的第三方库目录里。
操作步骤:
找到 site-packages 目录
import numpy # 任意第三方库均可
print(numpy.__file__)
输出类似C:\Users\用户名\App ...
大家好,我是小白。OPENCV是一个实用的库,很多传统的算法都可以通过它进行调用。
今天这篇文章就来讲一讲OpenCV Python ,顺便把 OpenCV Python 绑定的历史、包的区别、常见错误原因、推荐安装方式全部说透。
一、OpenCV 简介与 Python 绑定的历史OpenCV(Open Source Computer Vision Library)是一个由 Intel 在 1999 年发起的开源计算机视觉库,现在由 OpenCV.org 基金会维护。目前最新稳定版是 OpenCV 4.12.x。
OpenCV 最开始是用 C++ 写的,后来提供了 Python 绑定,让 Python 开发者也能轻松使用。
关键历史节点:
OpenCV 1.x 时代(2000-2008):Python 绑定模块名叫 cv,导入方式是 import cv。那个时候的接口比较原始,函数名也比较长。
OpenCV 2.0(2009 年):大重构!C++ 接口全面现代化,Python 绑定也彻底重写。新绑定的模块名定为 cv2,导入方式变成 import cv2(或 from cv2 im ...
GDAL(Geospatial Data Abstraction Library)是一个开源的地理空间数据转换库,常用于处理栅格(Raster)和矢量(Vector)数据。在栅格影像处理中,NoData 值用于表示无效或缺失的数据区域(如背景或无效像素)。有时,我们需要移除这些 NoData 值,以适应特定的数据分析或可视化需求。
下面是具体代码:
from osgeo import gdal
import sys
def remove_nodata(out_path):
# 以可写模式打开输出影像
out_ds = gdal.Open(out_path, gdal.GA_Update)
if out_ds is None:
raise Exception(f"无法以可写模式打开输出影像:{out_path}")
# 检查 GDAL 版本(可选,推荐 >= 3.1 以支持 DeleteNoDataValue)
print("GDAL 版本:", gdal.__version__)
su ...
我其实会的技能是很杂的,BOSS直聘是我一直保存手机的app,时不时看看不同的岗位的需求是什么。是的,我有一颗想跳槽的心,这也是我会的技能是很杂的原因。正如我从测量工作跳槽到遥感领域工作一样,至今我还记得怎么快速摆正三脚架。
今天我又看了下boss直聘的岗位,我一般不止是看遥感相关的,我还会看其他岗位。因为我是想跳槽的,跳槽到别的行业。
做遥感只是在吃老本。不过好在2025年,我大半年的时间都是在做深度学习和遥感结合的工作,我不在这里写过多与现工作相关的内容。这里只记录我在业余时的学习记录。
在业余时间,我依然会写一写公众号,并且在2026年我会选择一项技能点 好好学习,可能是三维重建,可能是嵌入式,至于具体深入学到什么程度,现在我还没想好。
现在我的现状很尴尬,这里会一些,那里会一些。这导致了我认为自己是学艺不精。小时候就听说过:学海无涯苦作舟。实际上我每天都在接触新的东西,真的是学不完。学不完也是指我的心太野了。
2025年,我写了两三个发明专利,其实也发明专利比写论文要简单太大。只要你有思路,只要你的思路能用代码实现,加上你的思路有创新,那么这样的思路就能变成发明专利。2026 ...
用 Python 把矢量等高线转成栅格网格——顺便聊聊乐高地形模型空间数据主要有矢量和栅格两种形式。矢量擅长精确描述点、线、面,比如城市边界、道路或等高线;栅格则用规则的网格像素来表示,每个像素带一个值,常用于高程、温度之类的连续数据。实际分析时,经常需要把两者结合起来,比如把矢量等高线转成高程栅格。
今天拿杭州为例,演示怎么用 Python 把等高线(矢量)转成规则网格(栅格),最后再离散化成几个高度级别——这样就能想象用不同颜色的乐高砖来搭一个迷你杭州地形模型了。整个过程主要靠 GeoPandas 和 OSMnx,代码简单,几分钟就能跑通。
数据准备杭州公开的等高线数据不太好找,我这里用一个常见的替代方案:从公开 DEM(数字高程模型)生成等高线,或者直接用开源高程数据。这里为了演示方便,我们先用 OSMnx 下载杭州市行政边界,然后假设有一份等高线数据(实际项目可以从自然资源部门或开源平台获取 DEM 后生成)。
先看边界:
import osmnx as ox
import matplotlib.pyplot as plt
# 下载杭州市行政边界
city = ox.geoc ...
[{"place_id":208441986,"licence":"Data © OpenStreetMap contributors, ODbL 1.0. http://osm.org/copyright","osm_type":"relation","osm_id":3221112,"lat":"30.2489634","lon":"120.2052342","class":"boundary","type":"administrative","place_rank":10,"importance":0.6742110419554537,"addresstype":"city","name":"Hangzhou City","display_name":"Hangzhou City, Zhejiang, China","boundingbox":["29.1888286","30.5648514","118.3396948","120.7254851"],"geojson":{"type":"Polygon","coordinates":[[[118.3396948,29.4774 ...
地理空间数据主要分成栅格和矢量两大类。今天我们先聊矢量数据,它用点、线、多边形这些坐标集合来描述真实世界。点适合标记具体位置,比如城市或景点;线用来表示道路、河流;多边形则描绘区域边界,如省份或湖泊。这种数据特别适合处理那些位置和形状都很重要的离散特征,在农业、城市规划、交通、环境监测等领域到处都能用到。
在 Python 生态里,处理矢量数据的王牌工具就是 GeoPandas。它基于 Pandas 扩展而来,又融入了 Shapely 的几何运算能力,让你既能像用 Pandas 那样轻松操作表格数据,又能顺手做各种空间计算,简直是空间分析的利器。
下面分享我平时最常用的 10 个 GeoPandas 操作技巧,帮助你快速处理、合并和转换矢量数据。
1. 从外部加载中国地图数据
GeoPandas 早期版本有内置数据集,但现在(2026 年)已经移到独立的 geodatasets 包里。我们直接用公开的 GeoJSON 数据加载省份边界,非常方便。
import geopandas as gpd
# 从阿里云 DataV 公开接口加载中国省份边界(包含香港、澳门、台湾)
gdf_ch ...
今天是2025年12月31日,祝大家2026、2027……(省略很多年份)……开开心心,身体健康。
今天简单来写一写近况。
2025年,在写代码方面,我偷懒了很多,一整年在github的提交次数是962次。
在2024年、2023年的提交次数在1500次左右。
2025年,在下班后,不想写代码的时间大大增加。
偶尔看看抖音的乌萨奇(没看过正版的),偶尔出门骑车逛逛,偶尔看看B站视频。
2026年的计划,我这几天在思考。
主要有三点目标。
1、继续搞主业,遥感数据处理、深度学习
2、三维重建
3、硬件
第一点,主业是我能在城市立足谋生的根本,对应的专业技能必须好好打磨维系,这是安身立命的基础。
第二点,关于三维重建。这个领域难度不低,我不敢保证一定能钻研透彻,打算从点云技术入手,循序渐进地摸索,慢慢向高斯泼溅这类前沿方向靠近。
第三点是硬件学习。我买51开发板都大半年了,至今还没正式开始学习,最近又打算再入手一块32开发板——说起来也符合“差生文具多”的调侃。
其实原本还有第四、第五个计划,但我很清楚自己的精力有限,与其贪多嚼不烂,不如果断放弃后两点,把核心精力放在前三项 ...
在测绘、GIS、工程建设等领域,“国家 2000 坐标系(CGCS2000)” 早已成为高频词汇。作为我国自主的高精度大地坐标系,它不仅是现代测绘体系的基础,更支撑着从城市规划到资源勘探的各类核心应用。而在实际使用中,“投影分带” 和 “带号” 是绕不开的关键知识点 —— 今天我们就以常用的epsg 4513 和 epsg 4534 带号为例,用通俗的语言拆解国家 2000 投影坐标系的核心逻辑。
先搞懂基础:为什么需要投影分带?地球是一个不规则的椭球体,而我们日常使用的地图、工程图纸都是平面的。把三维的地球表面 “压平” 到二维平面上,这个过程就是 “地图投影”。但直接投影会产生严重的变形,导致距离、面积、角度等信息失真,无法满足高精度测绘需求。
为了解决这个问题,就有了 “投影分带” 技术:把地球表面按经线划分成一个个 “竖条区域”,每个区域单独投影。这样能把变形控制在极小范围,保证局部区域的测量精度。国家 2000 坐标系最常用的是 “3 度分带” 模式 —— 从赤道开始,每隔 3 度划一个带,全球共 120 个带,每个带都有专属的 epsg标识。
重点解析:4513 与 453 ...
我以前喜欢用gdal,不喜欢用rasterio。
因为rasterio在打包的时候存在很多问题。
但是,近一个月来,我使用rasterio的次数越来越多,主要原因还是rasterio包装了很多实用的api接口。
至于打包的问题,我后续会专门写一篇公众号去介绍怎么解决rasterio打包的问题。
今天给大家分享一段Python代码,它的功能很简单: 读取原始影像将影像的 0 值转换为 NoData 值。
import numpy as np
import rasterio
def fix_no_data_value(input_file, output_file, no_data_value=0):
with rasterio.open(input_file, "r+") as src:
src.nodata = no_data_value
with rasterio.open(output_file, 'w', **src.profile) as dst:
for i in range(1, src.count + ...







