代码from osgeo import gdal
def resample_img(input_path, output_path, multiple = 10):
"""Resamples a raster dataset to 100 meters using GDAL.
Args:
input_path: Path to the input raster dataset.
output_path: Path to the output raster dataset.
"""
# Open the input raster dataset
input_ds = gdal.Open(input_path)
output_format = "GTiff"
# Create the output raster dataset
resampling_method = gdal.GRA_Bilinear
geo = input_ds.GetGeoTransform()
ou ...
最近工作遇到了一个小需求,用一个矢量文件去裁剪一个超级大的栅格文件(单文件超过140G)。
这个需求在arcgis很容易实现,但是arcgis有时候会卡顿。综上,用代码的方式去实现这个功能或是更好的选择。
代码from osgeo import gdal
import os
# 根据shp 裁剪影像
def clip_image_by_shp(input_file, output_file, clip_shape, nodata=0):
'''
@todo 根据shp 裁剪影像
@param shp_file: shp file
@param img_file: image file
@param outpath: output path
@return:
'''
outpath = os.path.dirname(output_file)
if os.path.exists(outpath):
pass
else:
os.makedirs(outpath)
...
上个月写了一个工具是关于shp文件转换为CAD文件,
后面被吐槽说这个工具的大小为390M。
我承认,这个是“小工具”一点也不小!
那是什么原因造成的呢?
其实这个python打包的通病问题,python作为胶水语言,可以快速开发。想要打包成二进制文件交给其他人使用,这个二进制文件一般是巨大无比的。
更底层的原因是,在代码中,我们导入了geopandas这个库,geopandas很好用,是因为它引用了非常多的第三方库,所以使用pyinstaller打包的时候,往往会把这些“无用”的第三方库也打包进去我们的项目里面。
同样是这个程序,我曾打包后的文件大小是3G多,我看了一下 ,好家伙啊,它把torch-cuda依赖也打包进去了!
针对这个shp文件转换为CAD文件小工具,我们可以改进它,主要做法是,不导入geopandas,即不使用geopandas!
经过网上冲浪查资料,我发现有个纯python包叫做ezdxf,这ezdxf可以对dxf文件读写,很符合这个小工具的要求。
我有了个大体的思路,使用ogr读取矢量文件的数据。ogr是啥?ogr就是osgeo里面的子库,ogr和gdal同一 ...
上个月写了一个工具是关于shp文件转换为CAD文件,
前天写了一篇shp文件转换为CAD文件的博客(公众号),今天是周六,也没啥事做,所以我们继续来完善这个小工具吧!
有个朋友反映这个小工具的存在可以改进的地方、问题,并希望可以开发继续开发字段分层的功能。
“有没有办法转换成填充,按某个字段分图层,这一步很重要啊”
这里有个难点是:我对CAD文件不熟悉。
所以把上面的需求拆分为,按照字段读取矢量,分别将这些字段中的不同值的点位数据,保存为多个DXF文件。
花了亿点点时间,把之前的代码改了。
最后花了很多时间为这个工具写一个界面,如果有人需要用这个小工具,请在公众号回复dxf 获取链接。
代码以开源,地址是https://github.com/ytkz11/rs-tool
测试测试数据是一个有五个图形的shp,在QGIS打开如下:
打开它的属性表,具体信息如下:
可以看到shp数据中有两个字段,其中target字段的内容是我手动写入的,目的是为了测试。
假设target字段是我们的目标字段,测试结果如下:
在输入文件的同目录下,生成了四个文件,分别是
这里是把所有的targe ...
YOLO v3是一种流行的用于实时物体检测的卷积神经网络(CNN) ,由Redmon等人于 2018 年发布。距今已有6年了,现在目标检测yolo算法已经发展到了yolov10,但是对于我这个深度学习新手来说,是有必要去深入学习一下经典的yolov3。
我第一次看到yolo这个词是在unknowncheats论坛,看到一个国外老哥用yolov3制作守望先锋的锁头挂,他提供了测试视频,视频里他的士兵76确实很猛。据他说yolov3的目标检测速度快,当时我也在玩守望先锋,所以记忆比较深刻。当时我的python玩得不六,当时只能默默膜拜一下大佬的操作。
我们还是来看看yolov3的整体架构吧。
参考:
https://www.cnblogs.com/chenhuabin/p/13908615.html#_label2
https://blog.csdn.net/qq_40210586/article/details/106144197
TIobe指数依据向主要搜索引擎提交编程语言名称时返回的网页数量来衡量编程语言的流行程度。该指数每月更新一次,并提供了自2002年以来的历史数据。
其官网是https://www.tiobe.com/tiobe-index/
有意思的事情来了,看下图。
这是编程语言排名的tiobe网站首页的截图。
原话是:
This month, Python has a ranking of more than 18% for the first time in its history. The last time a language hit more than 18% was Java in November 2016. Java is also the language with the highest ranking ever: 26.49% in June 2001. Runner up C++ is now exactly 8% behind Python, and that difference between position #1 and position #2 is also ...
今天聊一聊其他的。我时不时的有一个需求,是关于在windows电脑上定时关机。
不知道怎么地,我好几次都忘了这个自动定时关机的终端命令,于是每一次都要去网上查。
1.鼠标右击【开始菜单】选择【运行】或在键盘上按【 Win+R】快捷键打开运行窗口。
2.输入shutdown -s -t 1200 后点击【确定】。
1.鼠标右击【开始菜单】选择【运行】或在键盘上按【 Win+R】快捷键打开运行窗口。
2.输入shutdown -s -t 3000 后点击【确定】。
这里的3000是指,在3000秒后自动关机。
且不说我忘记这个命令好几次,在每次我输入这个命令,总在纠结大概是多少秒后关机,我一般是心理预算多少分钟后自动关机,先心算分转秒,然后再填写命令中的数字。
不如我直接写一个程序,我就是要输入分钟数,然后自动关机。
代码及讲解
代码很简单,其实也是在调用shutdown -s -t 3000这个命令,只是3000这个由用户(即我)自定义输入,输入的是分钟,在代码自动转为秒数。
新建一个叫做 “关机.py”的文件,在文件中编写代码:
import sys, os, timeminu ...
从直觉上来说,照片拼接必然是在两张有重叠的照片拼接开始,慢慢递进循环到所有照片。
在原先的预想中,需要对照片进行排序。但是现在再细想一下,大疆无人机在拍摄照片时就做好了照片的排序。
例如:
后缀为0034的照片,与0033、0035的照片存在重叠。
我们
YOLO v3是一种流行的用于实时物体检测的卷积神经网络(CNN) ,由Redmon等人于 2018 年发布。距今已有6年了,现在目标检测yolo算法已经发展到了yolov10,但是对于我这个深度学习新手来说,是有必要去深入学习一下经典的yolov3。
我第一次看到yolo这个词是在unknowncheats论坛,看到一个国外老哥用yolov3制作守望先锋的锁头挂,他提供了测试视频,视频里他的士兵76确实很猛。据他说yolov3的目标检测速度快,当时我也在玩守望先锋,所以记忆比较深刻。当时我的python玩得不六,当时只能默默膜拜一下大佬的操作。
我们还是来看看yolov3的整体架构吧。
You Only Look OnceYOLO代表“ You Only Look Once ”,翻译为中文就是你只需要看一次。在yolo之前也有一些目标检测模型,它们一般是通过滑块批量地检测是否存在目标。
实际上,YOLO v3是同类中第一个端到端网络。yolov3属于cnn模型,yolov3的主干网络使用了特征金字塔网络(Feature Pyramid Network, FPN)和Darknet-53 ...
现有四个点:(1, 1), (2, 2), (3, 3), (4, 4)
以这四个点围起来就是一个面。
如何通过python创建矢量文件。
我们以创建一个面矢量文件为例子,进行阐释。
我们可以使用geopandas、gdal库完成矢量创建。
geopandas 假设我们创建的矢量文件格式为 shp格式,代码如下:
import geopandas as gpd
from shapely.geometry import Polygon
def write_points_as_polygons_to_shp(points, output_file):
"""
将一系列点坐标转换为以这些点为中心的小正方形多边形,并写入Shapefile文件。
参数:
- points: 一个包含点坐标的列表,每个点是一个元组或列表,如[(1, 1), (2, 2), ...]
- output_file: 输出的Shapefile文件名
返回:
- 无,但会生成一个Shapefile文件
"""
# 创建多边形对象
simp ...