python投影函数 投影寻踪法python

怎样用arcgis中的python进行批量投影接到的需求是对文件夹下包括子目录所有影像进行投影变换,在网上找了找,大家的代码好像和需求不太一致,自己写了一个小工具 。
思路是遍历文件夹所有.tif文件 。
1.用os.walk()函数来获取路径和文件名
2.用 if 语句限制读取后缀为.tif的文件
3.将文件路径和文件名组合起来
4.调用arcpy.ProjectRaster_management语句投影变换并输出
由于刚刚接触python,难点主要在于os.walk()目录的读取这个函数的了解上 。
以下是代码
#coding = utf-8
import os
import arcpy
from arcpy import *
#定义一个函数,第一个参数是一个集合,用来接收所有.tif的路径 。第二个函数是指定的文件夹 。
def huoqu(jieshou,lujing):
for dirpath,dirnames,filenames in os.walk(lujing):
for filename in filenames:
ifos.path.splitext(filename)[1] == '.tif':
file1 = dirpath '\\' filename
jieshou.append(file1)
#这里变量的设置,GetParameterAsText函数来获取对应在python工具箱中的位置
env.workspace = GetParameterAsText(0)
work = env.workspace
ref = GetParameterAsText(1)
tifz = []
#调用自定义的函数
huoqu(tifz,work);
#对所有的影像进行循环投影变换,并且将输出路径设置为指定的文件夹 原本的名字
for file in tifz:
out = GetParameterAsText(2) "/"os.path.basename(file)
ProjectRaster_management(file,out,ref)
Python中几个特殊的函数1、 定义一个特殊python投影函数的__slots__变量python投影函数,来限制该class实例能添加的属性
2、 内置的@property(关键字)装饰器就是负责把一个方法变成属性调用的 。@property.setter(这里的property是类里面的属性名)负责把一个setter方法变成属性赋值 。
3、__str__(),__repr__() , __iter__() , __next__() , __getitem__() , __setitem__() , __delitem__(),__getattr__() , __call__()
求一个将3维矩阵按不同角度投影为2维矩阵的程序,matlab或者python的都可以,最好能有详细注释,万分感谢用shiftdim这个函数可以吧.a=rand(1,3,4);
shiftdim(a)
ans =
0.83690.47700.88540.6469
0.46390.13450.57970.7275
0.31230.76860.87130.7841
或者用permute这个函数.
python matplotlib 图像可视化 Python画图之总结待整理
Python Data Visualizations
Seaborn 库:
【python投影函数 投影寻踪法python】 Python Seaborn 教程:
matplotlib: plotting with Python
matplotlib: plotting with Python-github
python-data-visualization-course
Interactive Web Plotting for Python
Interactive Web Plotting for Python-github
CSDN-markdown编辑器语法——字体、字号与颜色
%matplotlib inline
%matplotlib notebook
Need to use either
or
Only one in each notebook! usinginlinewill just sentpngimages to browser, usingnotebookwill provide interactivity and allow updating old figures. Withnotebookyou need to make sure to create a new figure before plotting, otherwise the last one will be updated!
还有简便的 plt.close('all') 关闭所有图,不用管 fig 号码
Some plots from these tutorials:
调整名字和间隔
设置不同名字和位置
调整坐标轴
参数loc='upper right'
表示图例将添加在图中的右上角.
调整位置和名称
最后我们得到带有图例信息的图片.
移动坐标
然后我们挪动坐标轴的位置.
然后标注出点(x0, y0)的位置信息. 用plt.plot([x0, x0,], [0, y0,], 'k--', linewidth=2.5)
画出一条垂直于x轴的虚线.
添加注释 annotate
接下来我们就对(x0, y0)这个点进行标注.
其中参数xycoords='data'
是说基于数据的值来选位置,xytext=( 30, -30)
和textcoords='offset points'
对于标注位置的描述 和 xy 偏差值,arrowprops
是对图中箭头类型的一些设置.
添加注释 text
其中-3.7, 3,
是选取text的位置, 空格需要用到转字符
,fontdict
设置文本字体.
生成图形
当图片中的内容较多,相互遮盖时,我们可以通过设置相关内容的透明度来使图片更易于观察 , 也即是通过本节中的bbox
参数设置来调节图像信息.
首先参考之前的例子, 我们先绘制图像基本信息:
调整坐标
然后对被遮挡的图像调节相关透明度 , 本例中设置 x轴 和 y轴 的刻度数字进行透明度设置
其中label.set_fontsize(12)重新调节字体大?。琤box设置目的内容的透明度相关参,facecolor调节 box 前景色,edgecolor 设置边框 , 本处设置边框为无,alpha设置透明度. 最终结果如下:
散点图
首先,先引入matplotlib.pyplot简写作plt,再引入模块numpy用来产生一些随机数据 。生成1024个呈标准正态分布的二维数据组 (平均数是0,方差为1) 作为一个数据集,并图像化这个数据集 。每一个点的颜色值用T来表示:
数据集生成完毕,现在来用scatterplot这个点集,鼠标点上去 , 可以看到这个函数的各个parameter的描述,如下图:
输入X和Y作为location,size=75,颜色为T,color map用默认值,透明度alpha 为 50% 。x轴显示范围定位(-1.5,1.5),并用xtick()函数来隐藏x坐标轴,y轴同理:
今天的柱状图分成上下两部分,每一个柱体上都有相应的数值标注,并且取消坐标轴的显示 。
生成基本图形
向上向下分别生成12个数据,X为 0 到 11 的整数 , Y是相应的均匀分布的随机数据 。使用的函数是plt.bar
,参数为X和Y:
这样我们就生成了下图所示的柱状图基本框架:
现在的结果呈现:
接下来我们用函数plt.text分别在柱体上方(下方)加上数值,用%.2f保留两位小数,横向居中对齐ha='center',纵向底部(顶部)对齐va='bottom':
最终的结果就像开始一样:
画等高线
数据集即三维点 (x,y) 和对应的高度值 , 共有256个点 。高度值使用一个 height function f(x,y) 生成 。x, y 分别是在区间 [-3,3] 中均匀分布的256个值,并用meshgrid在二维平面中将每一个x和每一个y分别对应起来,编织成栅格:
接下来进行颜色填充 。使用函数plt.contourf把颜色加进去,fill, 位置参数分别为:X, Y, f(X,Y) 。透明度0.75,并将 f(X,Y) 的值对应到color map的暖色组中寻找对应颜色 。8代表等高线的个数 。
接下来进行等高线绘制 。使用plt.contour函数划线 。位置参数为:X, Y, f(X,Y) 。颜色选黑色,线条宽度选0.5 。现在的结果如下图所示,只有颜色和线条,还没有数值Label:
添加高度数字
其中,8代表等高线的密集程度,这里被分为10个部分 。如果是0,则图像被一分为二 。
最后加入Label , inline控制是否将Label画在线里面,字体大小为10 。并将坐标轴隐藏:
随机矩阵画图
这一节我们讲解怎样在matplotlib中打印出图像 。这里我们打印出的是纯粹的数字,而非自然图像 。我们今天用这样 3x3 的 2D-array 来表示点的颜色,每一个点就是一个pixel 。
colorbar
下面我们添加一个colorbar,其中我们添加一个shrink参数,使colorbar的长度变短为原来的92%:
3D
首先在进行 3D Plot 时除了导入 matplotlib ,还要额外添加一个模块,即 Axes 3D 3D 坐标轴显示:
之后要先定义一个图像窗口,在窗口上添加3D坐标轴,显示成下图:
接下来给进 X 和 Y 值,并将 X 和 Y 编织成栅格 。每一个(X, Y)点对应的高度值我们用下面这个函数来计算 。
其中 , rstride 和 cstride 分别代表 row 和 column 的跨度 。
下面两个图分别是跨度为1 和 5 的效果:
投影
下面添加 XY 平面的等高线:
如果 zdir 选择了x,那么效果将会是对于 XZ 平面的投影,效果如下
python 中的map(转载)1 map()函数的简介以及语法python投影函数:
map是python内置函数,会根据提供的函数对指定的序列做映射 。
map()函数的格式是:
map(function,iterable,...)
第一个参数接受一个函数名,后面的参数接受一个或多个可迭代的序列,返回的是一个集合 。
把函数依次作用在list中的每一个元素上,得到一个新的list并返回 。注意,map不改变原list,而是返回一个新list 。
2 map()函数实例:
del square(x):
return x ** 2
map(square,[1,2,3,4,5])---- -要打印结果需要 print(*map(square,[1,2,3,4,5])),这块打印python投影函数了再打印就会为空
# 结果如下:
[1,4,9,16,25]
通过使用lambda匿名函数的方法使用map()函数:
map(lambda x, y: x y,[1,3,5,7,9],[2,4,6,8,10])
# 结果如下:
[3,7,11,15,19]
通过lambda函数使返回值是一个元组:
map(lambdax, y : (x**y,x y),[2,4,6],[3,2,1])
# 结果如下
[(8,5),(16,6),(6,7)]
当不传入function时,map()就等同于zip(),将多个列表相同位置的元素归并到一个元组:
map(None,[2,4,6],[3,2,1])
# 结果如下
[(2,3),(4,2),(6,1)]
通过map还可以实现类型转换
将元组转换为list:
map(int,(1,2,3))
# 结果如下:
[1,2,3]
将字符串转换为list:
map(int,'1234')
# 结果如下:
[1,2,3,4]
提取字典中的key,并将结果放在一个list中:
map(int,{1:2,2:3,3:4})
# 结果如下
[1,2,3]
原文链接:
python投影函数的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于投影寻踪法python、python投影函数的信息别忘了在本站进行查找喔 。

    推荐阅读