python
文章平均质量分 50
python应用
江北20190411
。
展开
-
Python GDAL工具使用及使用VRT格式数据处理
前言VRT及虚拟栅格文件。使用方法先找到gadl工具exe文件的路径D:\Anaconda\envs\geopandas\Library\bin对数据列表构建vrt:首先在工具路径下打开cmd,或者打开cmd输入完整工具路径构建虚拟栅格gdalbuildvrt -input_file_list E:\GeoLearn\dem_vrt_test\data_list.txt E:\GeoLearn\dem_vrt_test\data_vrt.vrt对虚拟栅格进行重投影, 并指定输出分辨率原创 2021-09-28 11:26:46 · 2809 阅读 · 0 评论 -
Python计算灰度共生矩阵和常用的纹理因子
前言如何使用skimage计算GLCM和纹理因子可以参考利用python的skimage计算灰度共生矩阵。但是Skimage库只提供了常用的8中纹理因子(均值、方差、同质性、对比度、差异性、熵、角二阶矩、相关性、)中的5种,缺少均值、方差和熵的计算。这里讲解如何修改源码添加这三个因子的计算。添加后调用方式和其他因子的计算相同。修改/添加部分找到 skimage库greycoprops源码。Spyder可以直接右键该函数,转到定义处。需要添加/修改的部分,保持了与源码相同的编码风格,全是numpy向量原创 2021-09-28 11:19:06 · 2063 阅读 · 7 评论 -
Python绘制双变量三维曲面图
import numpy as npimport matplotlib.pyplot as plt# 定义双变量函数def func(X): x1, x2 = X return (x1-3.14)**2 + (x2-2.72)**2 + np.sin(4*x1+1.41) - np.cos(4*x2-1.73)# 生成双变量网格点x = np.arange(10).reshape(-1, 1)x1, x2 = np.meshgrid(x, x)# 求解y = np.as原创 2021-09-28 11:06:01 · 1394 阅读 · 0 评论 -
经验正交函数 (EOF) / 主成分 (PCA) 分解及Python实现
前言EOF 经验正交函数 分解原理及用法:https://wenku.baidu.com/view/93bc8a9b680203d8ce2f2468.html方法实现过程EOFPCAPython实现import numpy as npfrom scipy import linalg# 生成数据并打乱np.random.seed(9)data = np.random.randint(low=1, high=50, size=600).reshape(20, 30) * 10#原创 2021-09-28 11:00:04 · 3326 阅读 · 0 评论 -
差分进化算法 (DE) Python实现及源码解读
设函数,有三个未知解def obj_func(p): x1, x2, x3 = p return x1 ** 2 + x2 ** 2 + x3 ** 2初始解形状self.X = None # shape = (size_pop, n_dim)生成初始解 (DE继承类GeneticAlgorithmBase)lb, ub为x的上下限,新解为约束条件上下界内均匀分布的向量class DE(GeneticAlgorithmBase): def __init__(self, f原创 2021-09-28 10:51:33 · 2357 阅读 · 2 评论 -
累计分布函数匹配 (CDF matching) Python实现
import numpy as npimport scipy.io as ioimport matplotlib.pyplot as pltfrom scipy.interpolate import InterpolatedUnivariateSplinefrom scipy.optimize import curve_fitnp.random.seed(0)# 原始数据x = np.arange(0, 37)data_or = np.sin(x) + np.random.normal(s原创 2021-09-28 10:39:28 · 1694 阅读 · 0 评论 -
ASTER产品数据 (AST_08) 几何校正
前言国内有关ASTER的博客等资料真的很少。因个人需求,用过这个数据的不少产品,分享一下校正的方法。数据可从[EarthData](https://search.earthdata.nasa.gov/)进行下载,需要注册账号。原创 2021-05-17 16:37:30 · 1672 阅读 · 5 评论 -
Python scipy数组线性插值
实验数据是一个35,35的数组,采用线性插值得到375,375的数组。构造interp2d对象时,要求输入原始数据的行列坐标和数值,并指定插值方式。然后向构造好的对象中输入想要得到的数组坐标值。import matplotlib.pyplot as pltimport numpy as npfrom scipy.interpolate import interp2dresidual = np.load(r'F:\Py_project\Spatial_RF\residual.npy').res.原创 2021-05-17 15:35:17 · 853 阅读 · 0 评论 -
GWR4 软件输入数据制作
前言GWR软件是实现地理加权回归建模的专业软件。GWR软件下载地址Click here。软件下载后自带了User guidance,也可以参照这篇博客。软件要求输入的数据格式为.csv。数据中要包括投影坐标,因变量,解释变量。数据制作我这里以地表温度(LST)做因变量,NDVI做解释变量为例,使用Arcgis制作.csv输入文件。LST和NDVI的原始数据是两幅投影坐标的栅格影像。首先在Arcgis中打开影像,然后使用栅格转点工具将栅格转换为点状shp文件。得到每个像素点的shp文件。原创 2021-04-26 10:53:05 · 2414 阅读 · 8 评论 -
FY-4A 静止卫星圆盘数据几何校正
前言最近好多网友有FY-4的几何校正需求,就来更新一下。数据准备L1级的FY-4数据是HDF格式的全圆盘数据,数据集里面没有经纬度信息。每个位置对应的经纬度数据需要单独下载,如下图。这里我下载了4 km的经纬度查找表。文件下载解压后,是一个.raw格式的二进制文件。下面用python解析这个文件。import numpy as npfile = r'F:\Py_project\geoFY-4A\FullMask_Grid_4000.raw'raw_image = np.fromfile原创 2021-04-20 15:21:18 · 4949 阅读 · 10 评论 -
Python+Cartopy绘制中国地图
前言之前看了很多cartopy的教程,刚好手上有一份很久前下载的ERA5水汽数据,就练习一下吧。maskout白化的代码和colorbar分割来自气象家园的大佬。代码及数据网盘链接提取码:vtmk代码import cartopy.crs as ccrsimport matplotlib.pyplot as plt import numpy as npimport netCDF4 as ncimport cartopy.feature as cfeatureimport cartopy.io原创 2021-04-18 11:46:13 · 5533 阅读 · 6 评论 -
Python绘制分类图
前言遥感影像分类图一般为特定数值对应一类地物,用Python绘制时,主要在颜色的映射和对应的图例生成。plt.matplotlib.colors.ListedColormap支持自定义颜色。matplotlib.patches mpatches对象可以生成一个矩形对象,控制其颜色和地物类型的颜色对应就可以生成地物分类的图例了。具体用法可以自行Google和百度。下面给出一个模拟地物分类数据的可视化例子。代码import numpy as npimport matplotlib.pyplot as p原创 2021-04-17 18:03:35 · 1490 阅读 · 4 评论 -
Python+Basemap 经纬度标签的旋转与间距调整
前言这是个非常个人的需求,原图如下,可以看到经度的标注是水平的,多子图并列的时候占空间很大,也不够美观。所以目的是将它垂直显示。垂直显示经度标签basemap绘制投影影像参看前面的博客。下面两句是分别是绘制经纬线,查看它俩的方法和属性,发现并没有控制标签角度的部分。但是basemap是基于matplotlib库的,所以可以通过操作matplotlib来实现目的。drawparallels = m.drawparallels(parallels,labels=[True,False,False,原创 2021-03-15 21:11:55 · 1776 阅读 · 0 评论 -
Py6s批量大气校正Landsat8
前言使用py6s进行Landsat8等遥感影像的大气校正。代码来自基于6s模型的遥感影像大气校正方法,对应的代码下载地址Github。由于原始代码是在cmd中通过命令行传参运行的,包括两个输入参数,分别是 Input_dir=输入路径 Output_dir=输出路径。这样每次只能处理一个时相的数据。本文目的在于提供一个Windows环境下通过不修改源码的形式来实现批量大气校正多时相影像的思路。处理单时相将Github上整个代码工程下载到本地。打开Anaconda Prompt,输入python "原创 2021-03-14 09:20:20 · 3563 阅读 · 13 评论 -
Python+Cartopy绘制已投影影像
前言数据是一副投影为UTM 50°N的地温影像, 使用ax.contourf绘制已投影栅格时需要指定参考坐标系ccrs 和每一个数据点的投影坐标系坐标。(2) 数据读取部分的代码省略,是通过gdal读取的,readTifAsArray函数前面的博客中可以找到。代码指定投影并绘制import cartopy.crs as ccrsfrom cartopy.mpl.ticker import LongitudeFormatter, LatitudeFormatter, LatitudeLocator原创 2021-02-24 09:46:34 · 1690 阅读 · 2 评论 -
Python+Basemap绘制已投影的影像
前言数据一副具有albers投影的地温影像,而Basemap的基本参数中要求输入影像的左下右上的经纬度坐标,所以关键在于如何将投影坐标转化为大地经纬度坐标。在坐标转换过程中,用到了pyproj库,首先要定义转换前后的坐标类型,定义WGS84坐标系可用pyproj.CRS.from_epsg(4326)进行定义,但是由于我的pyproj的数据库路径有些问题,所以首先采用gdal读取一幅WGS84坐标的影像的wkt投影信息,然后pyproj.CRS.from_wkt( )进行定义要转换成的坐标系。关于影像原原创 2020-09-27 09:54:24 · 1981 阅读 · 0 评论 -
解决:object of type <class ‘numpy.float64‘> cannot be safely interpreted as an intege
回退一下numpy的版本:conda install numpy==1.17https://github.com/tensorflow/models/issues/8576原创 2020-09-14 14:58:10 · 907 阅读 · 0 评论 -
Python+GDAL几何校正任意自带经纬度数据的遥感影像
# -*- coding: utf-8 -*-import gdal, osrimport os def geoMERSI2(file, geoFile, afterGeoFile): ''' Parameters ---------- file : 文件绝对路径 需要校正的文件. geoFile : 文件绝对路径 地理坐标存在的文件. afterGeoFile : tif文件绝对路径 经过校正原创 2020-09-12 15:41:31 · 5521 阅读 · 25 评论 -
解决:TypeError: handle_get_file_code() got an unexpected keyword argument ‘save_all‘
问题出现在更新spyder到最新版本conda install spyder=4.1.4spyder更新完成后,之前的代码都不能正常运行报错:This command failed to be executed because an error occurred while trying to get the file code from Spyder's editor. The error was:An exception has occurred, use %tb to see the ful原创 2020-09-10 16:24:43 · 8760 阅读 · 6 评论 -
numpy.where()多条件判断
np.where中 多条件 使用 & 或者 |原因:& 和 | 可以判断np.array()格式的true与false数组,而and,or 只能判断单个值true或者false如下所示。原创 2020-09-10 12:42:38 · 3485 阅读 · 0 评论 -
Python实现多探元并扫遥感影像的直方图匹配
前言直方图匹配的函数参考了https://www.jianshu.com/p/3f6abf3eeba2写的很好。import matplotlib.pyplot as pltimport numpy as npfrom PIL import Imageimport matplotlibimport gdal, osrfrom osgeo import gdal_arrayimport pandas as pd# 将读取文件的灰度矩阵,转化为直方图,这里的直方图定义为python的dict类原创 2020-09-10 12:33:25 · 1076 阅读 · 2 评论 -
ASTER光谱库批量转换为传感器通道比辐射率
前言最近做的一个实现。将ASTER光谱库的所有地物连续的波谱响应的制定地物大类向指定卫星的通道比辐射率进行转换。最后形式为pd.Dataframe,列索引为地物名字,值为通道比辐射率。import osimport numpy as npfrom shutil import *import matplotlib.pyplot as plt from scipy import integrateimport pandas as pd#获取指定路径下所有文件的绝对路径def listDir(原创 2020-09-10 12:24:15 · 700 阅读 · 2 评论 -
Python读取nc文件转tif
import netCDF4 as ncdata = r'Y:\folder\H08_20200601_0000_1D_ROC010_FLDK.02401_02401.nc'nc_data_obj = nc.Dataset(data)nc_data_objOut[4]: <class 'netCDF4._netCDF4.Dataset'>root group (NETCDF4 data model, file format HDF5): title: Himawari-原创 2020-09-10 12:13:53 · 9529 阅读 · 10 评论 -
cmd调用Python脚本
cmd调用首先win + R 打开cmd窗口,cd到脚本所在的文件夹cd /d E:\pytest\银行系统练习然后输入python banksystem.py banksystem为脚本名IDL中打开cmd调用使用 & 可以一行执行多个命令spawn, 'cd /d E:\pytest\银行系统练习 & python banksystem.py'...原创 2020-05-21 21:24:36 · 461 阅读 · 0 评论 -
Python if __name__ == __main__的简单理解
通俗来讲,if __name__ == '__main__'就是实现在程序/模块之间互相调用时声明一个运行界限的功能。程序/模块之间互相调用时if __name__ == '__main__'之前的语句将被执行,而之后的将被忽略。举个小例子:新建一个py文件,命名为’ t ‘.a = 1b = 2if __name__ == '__main__': print('a + b = {c}'.format(c=a+b))直接执行该程序得到如下输出:a + b = 3另外新建一个py文原创 2020-05-20 00:27:35 · 754 阅读 · 0 评论 -
Python类的定义与使用
目录定义类类的实例化自定义遥感影像属性的类定义类#类(Class) 由3个部分构成:'''类的名称:类名类的属性:指对象的特征(一组数据)类的方法:允许对象进行操作的方法 (行为/功能)'''class people: def __init__(self, name, age): self.name = name self.age = age def information(self): print('name is {}'.原创 2020-05-17 20:30:39 · 394 阅读 · 0 评论 -
Python Numpy基础总结
目录数组属性内存布局其他属性 数值类型dtype常量创建数组创建0和1或指定数字填充的数组从现有数据创建数组创建范围数组创建重复元素数组创建随机元素数组数组操作数组切片改变数组形状转置数组合并拆分数组查找数组唯一值数组转列表索引相关np.wherenp.choose数学函数统计函数常用统计函数取置信区间参考数组属性内存布局方法 描述 ndarray.flags 有关数组内存布局的信息。 ndarray.shape 数组维度的元组。 ndarray.strides 遍历数组时每个维度中的字节元组。原创 2020-05-17 11:59:46 · 673 阅读 · 0 评论 -
Python GDAL批处理MODIS产品
批量几何校正MODIS产品from osgeo import gdal, osrimport osimport time'''批量读取文件夹中hdf格式的modis产品数据并进行几何校正(WGS84)'''def readHdfWithGeo(hdfFloder, saveFloder): #获取输入文件夹中所有的文件名 hdfNameList = os.listdi...原创 2020-05-07 22:10:56 · 2840 阅读 · 2 评论 -
Python GDAL学习笔记(二)
目录一、自定义空间坐标系使用EPSG或EPSGA编号进行初始化使用WKT字符串进行初始化使用PROJ字符串进行初始化附录二、遥感影像几何校正利用卫星自带的地理定位文件进行几何校正查看数据自带经纬度查找表位置查找需要进行校正的数据进行地理校正三、空间参考系统转换一、自定义空间坐标系使用EPSG或EPSGA编号进行初始化EPSG:欧洲石油勘探组织(European Petroleum Surve...原创 2020-05-05 17:07:50 · 7082 阅读 · 7 评论 -
Python GDAL学习笔记(一)
目录导入GDAL模块并查看版本/位置打开影像查看行列号和波段数查看影像文件描述和其他属性打开数据集波段并获取统计信息利用numpy将波段数据写入数组将波段数据写入数组的两种方法对比导入GDAL模块并查看版本/位置from osgeo import gdalprint("GDAL's version is:" + gdal.__version__)print(gdal)GDAL's ve...原创 2020-05-04 17:05:10 · 7768 阅读 · 3 评论 -
python matplotlib绘制散点密度图
import numpy as npimport gdal as gdimport pandas as pdimport matplotlib.pyplot as plt from scipy.stats import gaussian_kdefrom mpl_toolkits.axes_grid1 import make_axes_locatableplt.rcParams['fon...原创 2020-04-21 18:37:43 · 14293 阅读 · 9 评论 -
ArcGIS插值可视化气象数据
前言地图底图的制作和气象数据的预处理见我上两篇博客ArcGIS精美中国地图制作(详解)python处理日值气象数据在前面我们已经将日值的地温数据处理成了年均地温,添加了站点经纬度坐标并导出为excel格式。得到如下数据:导入数据在Arcmap中 文件-添加XY数据 将年均地温和站点位置数据导入。注意:excel表格的格式要另存为97-2003工作簿形式,否则会有"arcgi...原创 2020-04-14 10:47:28 · 20469 阅读 · 8 评论 -
python处理日值气象数据
数据说明数据来自 2010年中国地面气候资料日值数据集(V3.0) 中国气象数据网数据集实体文件名称:数据文件命名由数据集代码(SURF_CLI_CHN_MUL_DAY)、要素代码(XXX)、项目代码(XXXXX)、年份标识(YYYY)和月份标识(MM)组成。其中,SURF表示地面气象资料,CLI表示地面气候资料,CHN表示中国,MUL表示多要素,DAY表示日值数据。XXX-XXXXX说...原创 2020-04-13 13:29:28 · 17931 阅读 · 18 评论 -
python批量读取文件_动态命名变量
import osimport pandas as pdos.chdir(r'E:\pytest\2010年气象数据')l=os.listdir(r'E:\pytest\2010年气象数据')data=[]names = locals()for i in range(len(l)): io=l[i] names['Data_'+l[i][21:24]+'_'+l[i][...原创 2020-04-12 00:39:04 · 1431 阅读 · 0 评论 -
pandas读取常用格式文件
读取xls文件import pandas as pdimport matplotlib.pyplot as pltos.chdir(r'E:\pytest')io='FY4谱响应函数.xls' #Microsoft Excel 97-2003工作表sheet=pd.read_excel(io=io)#当文件没有header时,默认第一行当header,header=None设置不读取h...原创 2020-04-10 19:02:34 · 570 阅读 · 0 评论 -
Anaconda下解决Warning! ***HDF5 library version mismatched error***
报错如下Warning! ***HDF5 library version mismatched error***The HDF5 header files used to compile this application do not matchthe version used by the HDF5 library to which this application is linked....原创 2020-04-08 23:09:32 · 2198 阅读 · 1 评论