gdal
文章平均质量分 52
如雾如电
剑花,烟雨,江南
展开
-
python GDAL实现按属性选择图层(等同于arcpy的SelectLayerByAttribute_management)
用python版本的gdal完成按照字段属性选择矢量的功能原创 2022-03-15 18:47:48 · 2320 阅读 · 9 评论 -
python OSM(.map)数据转shp
1.OSM数据下载下载就不多说了,去官网地址OpenStreetMaphttps://www.openstreetmap.org/需要登陆账号,没有的自己注册下,登录后如下,手动选择想要下载的区域,不能太大,否则无法下载下载好后的文件是map.osm数据2.OSM数据转化这里用gdal来转化,参考链接:Vector Layers — Python GDAL/OGR Cookbook 1.0 documentationhttps://pcjericks.github.io/py-gda..原创 2022-02-18 14:10:15 · 2118 阅读 · 3 评论 -
python gdal计算矢量图层的面积
亲测有效:from osgeo import ogr,osrdef area(shpPath): '''计算面积''' driver = ogr.GetDriverByName("ESRI Shapefile") dataSource = driver.Open(shpPath, 1) layer = dataSource.GetLayer() src_srs = layer.GetSpatialRef() #获取原始坐标系或投影 tgt_srs原创 2021-05-24 11:48:45 · 2829 阅读 · 4 评论 -
语义分割数据增广(只需要opencv、numpy)
搬运了一下外网看到的数据扩充,只用了opencv和numpy,感觉挺不错的,原始代码有些有错误,我也都跑通了,大家根据需求用吧,都是可以存出来看的,感觉并不是所有扩充都适合使用,还是存储出来来好好观察下,挑选一下比较好链接:https://towardsdatascience.com/image-augmentation-mastering-15-techniques-and-useful-functions-with-python-codes-44c3f8c1ea1fimport osimport原创 2021-03-18 08:41:50 · 1249 阅读 · 4 评论 -
python gdal重采样
inPath 输入影像outPath 输出影像times 重采样多少倍,一般下采样比较多,这里是下采样import osfrom osgeo import gdaldef resample(inPath, outPath, times): in_ds = gdal.Open(inPath) out_rows = int(in_ds.RasterYSize / times) out_columns = int(in_ds.RasterXSize / times) num_bands = i原创 2021-03-30 09:11:33 · 692 阅读 · 0 评论 -
python gdal实现arcpy的SelectLayerByAttribute_management函数
import osfrom osgeo import ogr, gdalshp_path = './1.shp'ds = ogr.Open(shp_path,0)layer = ds.GetLayer()layer.SetAttributeFilter("majority = 1 or majority = 2")driver = ogr.GetDriverByName('ESRI Shapefile')out_ds = driver.CreateDataSource('./shp/t.s原创 2021-03-30 08:53:28 · 604 阅读 · 0 评论 -
python 用geopandas,rasterio,gdal完成arcgis分区统计功能(zonal)
前面已经有一篇实现分区统计功能的文章了(https://blog.csdn.net/qq_20373723/article/details/111350741),但是核心计算部分是用的numpy,比较难实现majority这个属性,这里用了geopandas,rasterio,gdal地理处理模块组合实现了自动分区统计到表,希望对大家有所帮助python 3.7.3,geopandas 0.8.2 ,GDAL 3.2.1,rasterio 1.2.0,其中的gdal和rasterio是严格对应的,如果不对原创 2021-03-02 15:04:26 · 2842 阅读 · 9 评论 -
监督分类:机器学习实现不带坐标系图像即普通图片的多分类
1.安装labelme,用于标注pip install labelme安装好后直接在命令行输入labelme按enter,接着工具就会弹出来了2.获取样本放大看:取任意形状都可以接受,每个类别的范围不包含其它类就行,这里我分了两个类别,请注意在弹出来填写类别的框中务必以0,1,2,3…这样从0开始按顺序给类别,主要是为了方便后面的处理,如果不照做会报错。样本选取好后,点击那个保存按钮,图像目录下会自动生成一个.json文件。3.标签转换参考链接:https://zhuanlan.zh原创 2021-02-02 14:07:01 · 1636 阅读 · 23 评论 -
遥感图像去除NoData及增强处理
去除NoData参考链接:https://stackoverflow.com/questions/20753288/filling-gaps-on-an-image-using-numpy-and-scipy图像增强参考链接:https://stackoverflow.com/questions/20753288/filling-gaps-on-an-image-using-numpy-and-scipy代码还是要改一些的,我把做好的放出来大家参考下1.去除NoData第二种方法比较慢import原创 2021-01-18 16:52:46 · 3290 阅读 · 12 评论 -
arcpy 核密度分析并设定范围保证结果和原始影像大小一样
import osimport gdalimport arcpydef read_img(filename): dataset=gdal.Open(filename) im_width = dataset.RasterXSize im_height = dataset.RasterYSize im_geotrans = dataset.GetGeoTransform() im_proj = dataset.GetProjection() im_data = dataset.ReadA原创 2020-12-18 11:48:46 · 595 阅读 · 0 评论 -
python gdal完成arcgis分区统计功能(zonal)
参考链接:https://towardsdatascience.com/zonal-statistics-algorithm-with-python-in-4-steps-382a3b66648a注意事项,栅格需要和矢量的坐标系保持一致,结果存在了cvs文件中import gdalimport ogrimport osimport numpy as npimport csvimport timedef boundingBoxToOffsets(bbox, geot): col1原创 2020-12-18 00:25:12 · 3494 阅读 · 8 评论 -
python gdal根据矢量裁剪栅格
感觉矢量裁剪栅格已经好几个了,但是还不够,这次是根据手动绘制的mask来裁剪的,出来的结果和mask贴合,而不仅仅是最大范围下面是裁剪的情况mask的形状:裁剪结果:参考链接:https://blog.csdn.net/weixin_40625478/article/details/107839548?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-3.not_use_machine_learn_pa原创 2020-11-22 12:52:30 · 1871 阅读 · 3 评论 -
LightGBM用于遥感影像多分类
LightGBM是一个框架,内置了:1.gbdt, 传统的梯度提升决策树;2.rf, Random Forest (随机森林);3.dart, Dropouts meet Multiple Additive Regression Trees;4.goss, Gradient-based One-Side Sampling (基于梯度的单侧采样)。这些方法的选择由 参数boosting_type来控制。我之前的微博记录了随机森林和支持向量机的分类方法,这都是scikit-learn机器学习包里的机原创 2020-11-21 23:11:40 · 1720 阅读 · 9 评论 -
python 16bit转8bit的方法
参考链接:https://blog.csdn.net/u014311125/article/details/93746867?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2allsobaiduend~default-1-93746867.nonecase&utm_term=16bit%E8%BD%AC8bit%20python&spm=1000.2123.3001.4430原创 2020-11-20 13:58:53 · 2546 阅读 · 0 评论 -
crf(条件随机场)用于遥感影像分类结果的优化
主要的代码段都是差不多的,就是用gdal读入了数据,结果还是有点变化的,参数需要自己慢慢调整"""Adapted from the inference.py to demonstate the usage of the util functions."""import sysimport numpy as npimport pydensecrf.densecrf as dcrfimport cv2import gdalfrom skimage import color# Get im{r原创 2020-11-20 00:39:18 · 2026 阅读 · 25 评论 -
NDVI
# -*- coding: utf-8 -*-import os, sys, timeimport numpy as npfrom osgeo import ogrfrom osgeo import gdalfrom osgeo import gdal_array as gadef stretch_n(bands, img_min, img_max, lower_percent=0, higher_percent=100): out = np.zeros_like(bands).ast原创 2020-11-19 23:31:47 · 654 阅读 · 0 评论 -
求矢量文件的iou
import numpy as np import shapelyfrom shapely import geometryfrom shapely.geometry import Polygon,MultiPoint #多边形import matplotlib.pyplot as pltline1=[2,0,2,2,0,0,0,2] #四边形四个点坐标的一维数组表示,[x,y,x,y....]a=np.array(line1).reshape(4, 2) #四边形二维坐标表示pol原创 2020-11-05 00:38:09 · 919 阅读 · 0 评论 -
python gdal逐个矢量图斑裁剪栅格
场景:面矢量存在多个图斑镂空查看裁剪结果:显示:import gdalimport ogr, osr# converts coordinates to indexdef bbox2ix(bbox,gt): xo = int(round((bbox[0] - gt[0])/gt[1])) yo = int(round((gt[3] - bbox[3])/gt[1])) xd = int(round((bbox[1] - bbox[0])/gt[1]))原创 2020-10-30 16:40:07 · 936 阅读 · 2 评论 -
监督分类:SVM即支持向量机实现遥感影像监督分类(更新:添加机器学习模型存储、大影像划框拼接)
前面已经有一个版本了,但是影像太大内存顶不住,而且训练和预测没有分离,后面批量用这个不可能每次每张影像都训练了再预测,这次正好有需求,正好有人已经把大影像划框写好了(在此感谢wjw提供了划框,一起优化了这个),我就最后把这个整理一下,算是终版吧,以后也不会再花时间整这个了# -*- coding: utf-8 -*-from osgeo import ogrfrom osgeo import.........原创 2020-05-01 13:48:21 · 7321 阅读 · 43 评论 -
AttributeError: 'NoneType' object has no attribute 'GetLayer'
这个错误浪费了我很长时间!!!!心态崩了(????),必须记录下来。这个错误应该不止一种情况下会出现,但是我这种情况。。。错误发生在gdal读shp文件时,很明显是shp根本没读到,我输出路径发现完全没问题。我的环境是python3 gdal2.4.1,这个错误和环境其实无关,就是代码格式不统一导致,切记代码要么都用空格,要么都用tab...原创 2020-04-18 23:33:14 · 13987 阅读 · 5 评论 -
python gdal + skimage实现基于遥感影像的传统图像分割及合并外加矢量化
根据我前述博客中对图像传分割算法及图像块合并方法的实验探究,在此将这些方法用于遥感影像并尝试矢量化。这个过程中我自己遇到了一个棘手的问题,在最后的结果那里有描述,希望知道的朋友帮忙解答一下,谢谢!直接上代码:# -*- coding: utf-8 -*-import osimport cv2import gdalfrom osgeo import ogr,osrimport num...原创 2020-04-15 23:36:49 · 4976 阅读 · 22 评论 -
python gdal 矢量裁剪栅格
下面的代码是python gdal 利用矢量文件在栅格图上裁剪出对应区域的实现,首先说明裁剪出来的大小肯定是完全一致的,但是我仔细看了下,貌似有点偏移,这点偏移应该是无法避免的。代码有两版,第一版是完全把图读进去了,问题就是图像太大就没办法,后来想gdal本来就可以不读出图只获取部分图像,然后改了下,最后得到第二版,完美。# -*- coding: utf-8 -*-import osim...原创 2020-04-02 17:24:19 · 3896 阅读 · 10 评论 -
无监督分类:用均值漂移方法对遥感影像进行聚类
python的sklearn模块中有封装好的MeanShift方法,下面试一下看看# -*- coding: utf-8 -*-import cv2import gdalimport numpy as npfrom sklearn.cluster import MeanShift, estimate_bandwidthdef read_img(filename): datas...原创 2020-03-18 16:34:17 · 693 阅读 · 5 评论 -
监督分类:用SVM做遥感影像特征级分类
前面已经做了很多像素级的分类了,这里继续深入,这里用的特征是LBP(局部阈值模式),思路就是先手动选点取样本点邻域并提取LBP特征进行训练得到模型,然后取每个像素的邻域提取LBP特征,然后用训练好的模型对每个像素对应的邻域判断类型,最终确定像素的类型这里放了一个初版和一个改进后的版本,初版里面有想记录的东西所以就也放这里了,过客们可以直接往下翻看终版。# -*- coding: utf-8 -...原创 2020-03-12 16:56:09 · 2362 阅读 · 1 评论 -
监督分类:用随机森林做遥感影像像素级分类
像素级分类有点耗时间,能力有限,在此先提供一个初版这里导入了传统决策树、随机森林、极端决策树,大家可以都试下下面是跑了4波段遥感影像的代码,最好选个小图,我这里逐像素分类很慢,还有很多需要改进的地方,希望大家可以在评论下给我点建议,指导一下这里是对***植被***进行提取# -*- coding: utf-8 -*-import os, sys, timeimport gdalfro...原创 2020-02-27 16:13:57 · 5244 阅读 · 21 评论 -
python gdal波段选取
比如你想取出四个波段中的任何1个或者3个,下面这个是批量的# -*- coding: utf-8 -*-import osimport gdalimport numpy as npfrom skimage import morphology,filtersdef read_img(filename): dataset=gdal.Open(filename) im_w...原创 2020-02-25 11:15:45 · 2443 阅读 · 10 评论 -
python gdal根据坐标(经纬度)创建空的矢量
前面的博文已经出现过这段代码了,这里单独拿出来吧,方便使用,坐标只需要知道左上角和右下角就行# -*- coding: utf-8 -*-import gdalfrom osgeo import ogr, osrshp_path = "./mask_use.shp"driver = ogr.GetDriverByName("ESRI Shapefile")data_source = ...原创 2020-02-25 10:23:02 · 1084 阅读 · 0 评论 -
python gdal矢量转栅格
# -*- coding: utf-8 -*-import osimport numpy as npimport gdalimport reimport time#import arcpyimagefile="D:/0220/605611/1/mask.tif" #参考图像,里面有坐标系需要用到line_file = "D:/0220/605611/1/t.shp" #需要转...原创 2020-02-25 09:55:56 · 1941 阅读 · 15 评论 -
python gdal遥感影像基础操作(读写、增加波段、添加坐标系)
1.读写defread_img(filename):dataset=gdal.Open(filename)im_width=dataset.RasterXSizeim_height=dataset.RasterYSizeim_geotrans=dataset.GetGeoTransform()im_proj=data...原创 2019-12-30 16:35:22 · 4280 阅读 · 0 评论 -
python gdal根据图像坐标生成矢量框(含图像坐标转地理坐标)
要生成矢量框需要将图像坐标转换为地理坐标或者投影坐标,以下代码是生成了满足条件的1000*1000区域对应的矢量框,关键在于红色字体部分。#-*-coding:utf-8-*-importosfromosgeoimportogr,osrimportgdalimportheapqimportnumbaimportnumpyasnpd...原创 2019-12-30 16:01:02 · 1462 阅读 · 1 评论