首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

栅格数据裁剪

参考资料: GDAL: gdalwarp GDAL: gdal_translate GDAL/OGR Python API 使用GDAL命令 GDAL提供了两个命令可以用于影像的裁剪:gdalwarp...为什么不推荐gdalwarp命令呢?这是因为gdalwarp命令只提供了根据坐标系的范围进行裁剪,而不支持根据行列号的裁剪。这时候我们可以求助于gdal_translate命令。...同时提供参数-projwin_srs可以用于指定-projwin参数所在的坐标系,即跟gdalwarp命令中的-te_srs参数类似。...第二就是首先自己选择出需要裁剪的区域,然后计算裁剪区域的GeoTransform的系数,最后将投影GeoTransform系数赋值给裁剪子区域,写入输出文件。...我们知道GDAL中使用了六参数模型存储GeoTransform参数,如果进行矩形裁剪的话,只有GT(0)GT(3)参数会有变化,即需要重新计算裁剪以后的左上角坐标即可。

2.3K50

栅格数据裁剪

参考资料: GDAL: gdalwarp GDAL: gdal_translate GDAL/OGR Python API 使用GDAL命令 GDAL提供了两个命令可以用于影像的裁剪:gdalwarp...为什么不推荐gdalwarp命令呢?这是因为gdalwarp命令只提供了根据坐标系的范围进行裁剪,而不支持根据行列号的裁剪。这时候我们可以求助于gdal_translate命令。...同时提供参数-projwin_srs可以用于指定-projwin参数所在的坐标系,即跟gdalwarp命令中的-te_srs参数类似。...第二就是首先自己选择出需要裁剪的区域,然后计算裁剪区域的GeoTransform的系数,最后将投影GeoTransform系数赋值给裁剪子区域,写入输出文件。...我们知道GDAL中使用了六参数模型存储GeoTransform参数,如果进行矩形裁剪的话,只有GT(0)GT(3)参数会有变化,即需要重新计算裁剪以后的左上角坐标即可。

1.5K21
您找到你想要的搜索结果了吗?
是的
没有找到

GDAL命令:一行代码转换坐标系

本文介绍基于gdal模块,在命令行中通过GDAL命令的方式(不是Python或者C++代码,就是gdal模块自身提供的命令行工具),对栅格遥感影像数据加以投影,即将原本的地理坐标系转为投影坐标系的方法...如果大家是用的Anaconda环境,那么就可以基于文章Anaconda环境配置GDAL的方法中介绍的方法,借着Python环境配置一下gdal模块;如果想通过其他方式配置gdal模块,那么参照gdal模块官网的介绍加以操作即可...gdalwarp vegetation_type.tif result.tif -t_srs "EPSG:32648"   其中,vegetation_type.tif就是原文件(待投影的文件)的名称...以上,我们利用了gdal模块提供的一个命令行工具——gdalwarp命令,实现了栅格图像投影的需求。...除了上述命令行工具,按道理我们还可以用Python代码的方式,基于gdal模块提供的Python语言的API——gdal.Warp()函数,或者gdal.Translate()函数等,来实现栅格投影的需求

27210

栅格数据投影转换

使用GDAL提供的命令行工具进行转换 GDAL提供了gdalwarp命令可以方便地让我们进行影像拼接,重投影,裁剪,格式转换等功能 比如,我们需要将MODIS数据的Sinusoidal投影转为UTM投影...终端中执行如下命令: gdalinfo MOD09A1.A2017361.h28v06.006.2018005034659.hdf (用于查看MODIS数据中的波段名称与地址,这里我们只转换第一波段) gdalwarp...下面我给出具体的实现代码: 第一种方法直接调用gdal.Warp()方法,该方法其实就是对gdalwarp命令的封装,第一个参数是输出文件,第二个参数是输入文件或者输入的Dataset,后面的都是可选参数...反射变换的六参数模型: 放射变换使用如下的公式表示栅格图上坐标地理坐标的关系: Xgeo=GT(0)+Xpixel∗GT(1)+Yline∗GT(2)Ygeo=GT(3)+Xpixel∗GT(4...对一个上北下南的图像,GT(2)GT(4)等于0, GT(1)是像元的宽度, GT(5)是像元的高度的相反数。(GT(0),GT(3))坐标对表示左上角像元的左上角坐标。

1.7K30

GDAL,地学必备~python的gdal(裁剪、拼接)

你认识GDAL吗?你了解GDAL吗? 反正我不是很熟,我只知道它很酷、很快、而且很厉害,不过好像也有很多缺陷。很酷很快很厉害我就不多说了,网上的彩虹屁多的牛毛一样。...y,xy的长宽以及两个0值---如果有错,请无情的批判我),好像也认不到它的坐标系?...("gdalwarp -cutline " + str(shp) + " -crop_to_cutline " + str(inp) + " -tr " + str(res) + " " + str(res...) + " " + str(out), shell = True) #上面一样的,out是输出的路径+文件名,inp1是输入的,两个res分别是空间分辨率的长宽,shp是裁剪用的矢量哦 你们要是问我为什么写的这么简单...(这个你们可能看不清,它是两个MAIAC的影像拼接而成,分为上下两部分) 最后,希望我能大家一样的幸福快乐~

1.5K41

投影坐标系转地理坐标系的GDAL实现

其中,其实本文的操作方法,和文章GDAL命令:一行代码转换坐标系中的操作非常近似,可以认为就是将上述文章里代码修改一个参数,从而使得操作反过来执行了。   ...这里需要注意,本文和文章GDAL命令:一行代码转换坐标系一样,只要在配置好gdal模块后,进入任何一个命令行工具中即可执行代码;其中,如果大家的gdal模块是在Python环境中配置的,那么建议就在Python...例如,我这里前期是在Anaconda环境的Python中配置的gdal模块,那么此时就打开Anaconda下属的Prompt工具即可;如下图所示,这两个Prompt工具选择任意一个均可。   ...gdalwarp GF1WFV1.16m.2021001035028.48STA.000000_SR.tiff SR_WGS84.tif -t_srs "EPSG:4326"   运行上述代码,如下图所示

14710

使用 python 处理 nc 数据

前言 这两天帮一个朋友处理了些 nc 数据,本以为很简单的事情,没想到里面涉及到了很多的细节坑,无论是“知难行易”还是“知易行难”都不能充分的说明问题,还是“知行合一”来的更靠谱些,既要知道理论又要知道如何实现...可以使用 gdal 查看数据信息,执行: gdalinfo name.nc 即可得到如下信息: Driver: netCDF/Network Common Data Format Files: test.nc...所以看到这里,各位应该已经明白了,可以直接使用 GDAL 处理 nc 数据,比如直接使用 gdalwarp 将某个 SUBDATASET 转成 GeoTiff 等等,此处暂且不表,各位只需要查阅一下 gdalwarp...south, east, north, width, height) }) crs 表示目标数据空间投影信息,transform 表示目标文件 空间范围信息,可以通过经纬度信息图像尺寸等计算得到...每个目标都有多条路可以达到,重要的是找到那条自己喜欢的适合自己的路,然而话又说回来,即使走的不是想要的那条路,不是一样可以达到目标嘛!所以关键是要找到自己的目标。

3.4K50

多线程GCD

进程线程 进程 是指在系统中正在运行的一个应用程序。 每个进程之间是独立的,每个进程均运行在其专用且受保护的内存空间内。 比如同时打开QQ、Xcode,系统就会分别启动两个进程。...文件B、文件C) 同一时间,CPU只能处理一条线程,只有一条线程在工作(执行) 多线程并发(同时)执行,其实是CPU快速地在多条线程之间调度(切换),如果CPU调度线程的时间足够快,就造成了多线程并发执行的假象...移动APP经常使用多线程,因为对APP来说,界面要保持响应用户操作并给以反馈,也就是要保持流畅。...对于iOS程序,使用多线程有几类: c语言的pthread_t NSThread GCD NSOperation 使用的比较多的应该就是GCDNSOperation了,对于这两者的讨论可以看看这个 NSOperation...一般分为两大类型:并发队列串行队列。并发功能只有在异步函数下才有用。

1.1K10

大栅格数据如何更快运算

通过这两周的探索,也慢慢找到了一些加快栅格数据计算的方法,读者分享。...比如下面这个代码,通过RasterXSizeRasterYSize获取数据的大小,然后将栅格影像分为了4乘4,共计16块小栅格。...普通的 NumPy 数组用于处理可以容纳在内存中的数据集,并且在大多数情况下,计算操作速度更快。然而,它们不能用于处理比可用内存更大的数据集。...但硬盘的写入速度读取速度经常爆100%,这个时候就知道了mmap_array数组需要和内存进行快速的读取写入,由于mmap_array数组默认是保存到python脚本的同级目录之下,所以为了突破硬盘的限制...可以,使用多线程。 Python的多线程技术可以使用内置的 threading 模块来实现。

27020

多线程-NSOperationNSOperationQueue

** 因为它是用来封装任务的,大家可以看到 NSOperation NSOperationQueue 分别对应 GCD 的 任务 队列, 但是NSOperation本身又有执行多线程的能力跟GCD...分别是:NSInvocationOperation NSBlockOperation 。创建一个 Operation 后,需要调用 start 方法来启动任务,它会默认在当前队列同步执行。...这样 Operation 中的任务 会并发执行,它会 在主线程其它的多个线程 执行这些任务.。并且ddExecutionBlock 方法必须在 start() 方法之前执行,否则就会报错。...就算是 addExecutionBlock 方法,也会在 当前线程其他线程 中执行,也就是说还是会占用当前线程。如果你不想这个任务在主线程中执行(代码默认情况下都在主线程中执行。)...C.可以在不同的队列之间依赖,依赖是添加到任务身上的,队列没关系。

1.1K30

多线程的同步死锁

多线程同步死锁 在多线程编程中,有可能会出现同时访问同一个资源的情况,这种资源可以是各种类型的的资源:一个变量、一个对象、一个文件、一个数据库表等,而当多个线程同时访问同一个资源的时候,就会存在一个问题...在售票员的案例中,多个线程访问的时候就会出现数据出错的情况 售票系统有两个个渠道, 网络购票,现场购票,下面模拟购票流程,然后我们启动两个线程代表网络线程购票 ?...它们是Java语言提供的实现线程间阻塞控制进程内调度的底层机制. 三个方法的解释: - wait() :等待,将正在执行的线程释放其执行资格 执行权,并存储到线程池中。...通过输入输出来演示等待唤醒 有两个线程 input线程的作用是输入数据到对象,output作用是从对象中输出数据, 然后要求一次输入一次输出 **基本过程** - 输入:赋值后,执行方法wait...要给输入输出同一个锁才能起到同步的作用 2. wait()notify()需要用锁对象来调用,这样才知道唤醒或者休眠那个锁中的线程 **程序** ``` main:

1.2K00

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券