以上一个代码实例gdal计算NDVI为例: 如何在Linux下使用gcc进行编译? (顺便说一下,上次的代码只能在gdal1下编译,因为gdal2和1的API稍微有些改动) gdal的动态链接库如果采用默认的安装方式应该在/usr/local/lib目录下面,而头文件在/usr/include/gdal目录下面。 那么,我们的编译命令应该是这样的:g++ NDVI.cpp -std=c++11 -I/usr/include/gdal -L/usr/local/lib -lgdal -o NDVI.o 其中: -std=c++11 指定使用C++11标准进行编译。因为上一个代码中使用了C++11中的std::array 等特性。
事情起因于在推特看到关于ggVennDiagram这个 R 包教程的一条推文,想着去复现一下,于是开始去安装,不料安装过程中出现了sf这个依赖包始终安装不成功的一堆错误,于是有了这一篇文章,特此记录一下,也希望给遇到类似问题的小伙伴一个参考。
Conda的下载和安装 什么是Conda? 官方定义:Package, dependency and environment management for any language—Python, R
GDAL可通过configure来实现一些自定义配置,可通过./configure –h命令来查看。--prefix=path表示设置GDAL的make install后的build目录,里面有生成的头文件和动态库。输入如下命令:
顺便安装postgresql-devel、libxml2-devel,后边编译安装PostGIS会用到。
Geospatial Data Abstraction Library (GDAL)是使用C/C++语言编写的用于读写空间数据的一套跨平台开源库。现有的大部分GIS或者遥感平台,不论是商业软件ArcGIS,ENVI还是开源软件GRASS,QGIS,都使用了GDAL作为底层构建库。
现在最新的proj5.2.0已经可以通过cmake进行编译了,尝试了一下确实比以前要方便点。解压下载的proj5.2.0的压缩包,在cmake界面填入如下路径:
今天在笔记本(macOS平台)上折腾了一下如何搭建GDAL的Java开发环境。虽然GDAL的Python接口更好用,但是有时候需要协同使用一些Java库的时候,也必须使用Java版本的GDAL。
GDAL是使用PROJ进行坐标转换的,但是很容易出现转换不了的问题,这里总结一二,以供参考。
2. 安装g++ yum install gcc-c++ libstdc++-devel
本文介绍在Visual Studio软件中配置、编译C++环境下GDAL库、SQLite环境与PROJ库的详细方法。
使用VS2015编译最新的64位GDAL(最新gdal2.11),确实有一些问题,看来双方还是太新了,有点不兼容,特总结如下。
大家好我是费老师,在我之前的某篇文章中为大家介绍过如何在windows系统上,基于ESRI FileGDB驱动为geopandas补充针对gdb文件的写出、追加功能,但那种方式既有些麻烦,又不支持linux等其他系统,局限性颇多,且经常会出现一些小问题。
将该目录添加到自己的环境变量Path中,比如我的路径是:E:\C++\Library\gdal\release-1800-gdal-2-1-0-mapserver-7-0-1\bin
GDAL可以支持将KML作为矢量文件文件读取,但是需要在编译的时候添加第三方库的支持,否则默认的编译结果是还是会不识别这种格式。
本文介绍在Anaconda环境下,安装Python中栅格、矢量等地理数据处理库GDAL的方法。
wget http://download.osgeo.org/gdal/2.0.0/gdal-2.0.0.tar.gz tar -xzvf gdal-2.0.0.tar.gz
这里使用 ubuntugis提供的gdal进行安装。 首先更新一下ubuntugis的源:
最近研究了一下GIS、测绘学的坐标转换的问题,感觉大部分资料专业性太强,上来就是一通专业性论述;但感觉对于相关从业者来说,其实不必了解那么多背景知识的;就通过GDAL这个工具,来简单总结下坐标转换相关的问题。 GDAL坐标转换其实也是调用proj4来实现,但是proj4有个特别麻烦的地方,就是坐标系描述的部分特别繁复,需要对专业知识有一定的了解。使用GDAL则相对简单很多。
电子海图是为适用航海需要而绘制的包含海域地理信息和航海信息的一种数字化的专题地图,符合国际标准的电子海图数据统称为S-57电子海图。本文主要在S-57电子海图数据的理论模型和数据结构的基础上,实现对S-57电子海图数据文件的解析,将海图信息解析后保存到xml文件中,供后续调用和研究。 电子导航图(Electronic Navigational Chart, ENC)是由各个国家的航道官方部门根据国际航道组织的《数字海道测量数据传输标准》(S-57标准)而制作的,它是一种面向对象的矢量格式的电子地图,
OSGEarth是OpenSceneGraph扩展库,编译过程可以参看我的另一篇文章:Win64下编译OSG详细过程(Win10+VS2015+OSG3.6.3)。
在python与地理空间分析(1)与(2)中我们介绍了GIS中常用的数据类型、python在处理地理空间数据时用到的包以及给定经纬度计算空间距离的算法,本期我们主要介绍对地理空间分析中常用到的矢量数据shp文件的处理,在捍卫祖国领土从每一张地图开始我们也提供较为精准的包括南海九段线的中国地图,大家可以自行下载。
WRF中地形数据(海拔高度)分辨率最高为30s,差不多就是900m,当模型空间分辨率较高时,比如在低于1km的情况下,经常会考虑增加地形高度的分辨率,这里使用美国的SRTM( Shuttle Radar Topography Mission)的DEM数据,这个数据覆盖了全球陆地,在美国本地分辨率为1s,其他地区为3s(约90m),因此使用这个更高分辨率数据来测试一下。
今天打算使用GDAL读取MODIS影像数据,由于我的MODIS是HDF4格式,而默认的GDAL是不包含HDF数据驱动的,所以必须重新编译GDAL。 我的开发环境是Ubuntu 14.04,首先安装需要的HDF包。 sudo apt-get install libhdf4-alt-dev libhdf5-dev libnetcdf-dev hdf4-tools hdf5-tools libgeos-dev libproj-dev 其中,libhdf4-alt-dev,libhdf5-dev,libnetcdf-dev分别是HDF4, HDF5, NetCDF数据的开发库,hdf4-tools和hdf5-tools分别是HDF4和HDF4的命令行工具。libgeos-dev和libproj-dev分别是GEOS和Proj.4的库。 特别需要注意的是:对于HDF4不要安装libhdf4-dev而需要安装libhdf4-alt-dev。我今天刚开始安装的是libhdf4-dev,编译安装都没有问题。但是读数据的时候一直提示打不开HDF4的数据。折腾了好久,最后,网上查询到说是libhdf4-dev包中含有一个NetCDF库的兼容API导致的。 接下来是下载源码进行编译,进入源码目录,执行下面命令。 ./configure --with-geos --with-static-proj4 --with-hdf4 --with-hdf5 --with-netcdf --enable-debug make sudo make install 将lib库添加到用户环境变量中,我是在~/.profile文件中进行的配置: export LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/lib 最后使用sudo ldconfig命令使之生效。 利用其读取MODIS数据如下图:
同时还需要提前安装好VisualStudio环境,我这里用的VS2015;以及cmake,用来生成VS工程,我这里用的最新的cmake3.13.3。
[[[200 228 197] [200 228 197] [200 228 197] ... ... [200 228 197] [200 228 197] [200 228 197]]]
NetCDF文件是自描述的二进制数据格式。所谓自描述就是自带属性信息,这和一般的雷达基数据格式不同,一般的雷达数据也是二进制的,但不是自描述的,而是需要额外的数据格式文档来说明数据格式,而NetCDF文件中包含了描述变量和维度的元数据信息。通常包含以下三个部分:
大家好我是费老师,很多读者朋友跟随着我先前写作的基于geopandas的空间数据分析系列教程文章(快捷访问地址:https://www.cnblogs.com/feffery/tag/geopandas/),掌握了有关geopandas的诸多实用方法,从而更方便地在Python中处理分析GIS数据。其中在文件IO篇中给大家介绍过针对ESRI GeoDataBase格式的文件(也就是大家简称的gdb文件),可以在指定图层名layer参数后进行读取,但无法进行gdb文件的写出操作。
基于MFC在写一个利用GDAL和GDI+显示图像的系统,原有的Image::FromFile和Image::FromStream都用了一遍发现均会造成锁文件的情况,即使在程序用了delete的情况下,按道理FromStream应该不会锁但是我笨拙的编码依然是锁上了。。。索性换GDAL读图像然后用GDI+显示。在码代码中出现了如下的问题:
在进行遥感影像处理的时候,我们经常需要进行裁剪的工作,来看看如何使用GDAL工具进行这项操作吧!
由于WRF自带最高分辨地形数据是30s的,约900m。要使用更高分辨率的地形数据需要自己制作、添加。下面简要介绍一下下载、制作和使用流程,仅供参考。
本文介绍基于gdal模块,在命令行中通过GDAL命令的方式(不是Python或者C++代码,就是gdal模块自身提供的命令行工具),对栅格遥感影像数据加以投影,即将原本的地理坐标系转为投影坐标系的方法。
Geoserver默认支持的栅格数据源比较少,包括ArcGrid,GeoTiff,WorldImage,ImageMosaic等,是不支持Erdas Img格式的栅格数据源的,因此,为了能够让Geoserver支持发布Erdas Img格式的数据源,需要用GDAL的插件对Geoserver进行扩展,本文讲述如何在Geoserver中配置并支持Erdas Img格式的数据源。
modis的hdf文件在存储上有优势,但是在实际使用过程中存在一定的弊端。例如本次重点讲解的NDVI-16D-1km、MAIAC-1D-1km两类文件,其中maiac的文件在aod属性中包含4个波段的文件,需要将4个波段最大化的利用起来。而ndvi文件则较为简单只需要把hdf文件中对应部分取用即可。
本文介绍在Anaconda环境下,基于.whl文件安装Python中高级地理数据处理库GDAL的方法。
首先利用arcgis对landsat影像打点云样本和非云样本点图层,转为csv,用作机器学习检测样本
gdal.Warp是一个很好用的函数们可以用来重投影、影像裁剪等。用它对MODIS数据进行重投影很简单。
Typing模块的改进、新版本的pickle协议、可反转字典、Python C API和CPython实现、多进程共享内存
前两天,有位同仁再问我一个问题,问题大概是介个样子的:打包shp数据位zip格式并上传,上传完成后再在web上展示出来。这个需求,以前在Arcgis Online上见过,所以还是比较熟悉的,所以我就给他说:先将zip解压,再读取shp数据并将之转换为Geojson返回前台,并在web上展示出来。很庆幸的是,者为同仁很快就实现了shp到Geojson的转换,就问我Arcgis for js 中怎么展示Geojson,我截了个Arcgis for js的API给他他就实现了上述的功能。同时,我想他请教了如何实现的转换,他告诉我说是GDAL实现的,并给了我关键代码,因为代码是C#的,所以,经过周末的折腾,在JAVA上实现了,在此分享给大家。
Modis数据向来风骚,其HDF里包含了很多subdataset,其中有一个maiac的数据尤为特别。Maiac文件里含有大概12个数据集,每个数据集里又有4个波段(维度),如果按GDAL的translate函数直接转换,将得到错误的结果,会只得到第一个波段Band1如下:
1、双击Anaconda3-4.4.0-Windows-x86_64.exe安装,安装目录D:\ProgramData\Anaconda3
gdal.open(r'D:/Thesis/ML/modis3km/MOD04_3K.A2018001.0320.061.2018003202214.hdf')
GDAL 是 Geospatial Data Abstraction Library 的缩写,是一个在X/MIT许可协议下的开源栅格空间数据转换库。它利用抽象数据模型来表达所支持的各种文件格式。它还有一系列命令行工具来进行数据转换和处理。
Gdal的官网一搜就有了:www.gdal.org。里面对gdal各种函数的描绘,一应俱全,有时候即使不用python的gdal包。通过安装gdal后,也能使用subprocess调用cmd,使用gdal的各种功能和函数。
反正我不是很熟,我只知道它很酷、很快、而且很厉害,不过好像也有很多缺陷。很酷很快很厉害我就不多说了,网上的彩虹屁多的和牛毛一样。我主要想说说几个问题,虽然这些问题可能只有我会遇到(意思是可能我安装的姿势不太对)。
下面的例子打开一副GeoTIFF影像,输出了影像的一些信息,然后遍历了所有波段,输出波段的一些信息
领取专属 10元无门槛券
手把手带您无忧上云