gdal gdal2tiles.py 的使用
I’m here showing how you can use GDAL2Tiles to generate map tiles of Tom Patterson’s Natural Earth II. This is a beautiful raster map that portrays the world environment in an idealised manner with little human influence. The map can be downloaded on this page. I’m here using version 2C.
I start by using gdal_translate to georeference the map image:
The image should now have the correct projection (EPSG:4326), but GDAL2Tiles was not generating the KML SuperOverlay before ran this command:
The original raster map is 16,200 x 8,100 pixels. Each map tile image is 256 x 256 pixels. This table shows the number of tiles generated for each zoom level:
For my purpose, 5 zoom levels are enough. I therefore reduced the map image to 8192 x 4096 pixels:
Finally, I used GDAL2Tiles to generate the map tiles:
See the result as a KML SuperOverlay in Google Earth or in Open Layers. There seems to be a problem that OpenLayers can’t georeference TMS map tiles. It is therefore difficult to combine a map tile layer with other map layers.
UPDATE 2 APRIL 2008: The OpenLayers example above is now working properly thanks toChristopher Schmidt.
http://www.gdal.org/gdal_translate.html---可以查看gdal的帮助文档。查看那个命令的帮助直接替换了gdal_translate就可以了
另一种方法:
Step 1: Download and install GDAL
Begin by downloading and installing the GDAL as detailed here.
Step 2: Download an image
You can use any image. There are a number of sources of geographic data on the web. You can use any of them, but you should know the boundaries of the image—the latitude and longitude of each of the corners of the image. This tutorial uses a NASA Blue Marble image, available for download from NASA's website. These images were taken in 2004 and present a beautiful image of the Earth from space. Choose one of the files in the lower right of the right navigation bar.
If you're using your own image and know that it is already georectified, then you can skip to Step 5. Otherwise, proceed with Step 3.
Step 3: Get information about the image
Once you've installed the GDAL libraries and selected the image, you need to get some information about the image so that you can georeference it. Specifically, you need the pixel and line positions of each corner of the image. If you imagine the image as a table, with columns and rows, the pixels are the columns, and the lines are rows.
GDAL provides a handy utility, gdalinfo
, for capturing this information. At the command line, simply typegdalinfo filename
, replacing filename
with the path to the file. You should get output that looks like this:
Driver: JPEG/JPEG JFIF
Files: world_200401.jpg
Size is 21600, 10800
Coordinate System is `'
Image Structure Metadata:
SOURCE_COLOR_SPACE=YCbCr
INTERLEAVE=PIXEL
COMPRESSION=JPEG
Corner Coordinates:
Upper Left ( 0.0, 0.0)
Lower Left ( 0.0,10800.0)
Upper Right (21600.0, 0.0)
Lower Right (21600.0,10800.0)
Center (10800.0, 5400.0)
Band 1 Block=21600x1 Type=Byte, ColorInterp=Red
Image Structure Metadata:
COMPRESSION=JPEG
Band 2 Block=21600x1 Type=Byte, ColorInterp=Green
Image Structure Metadata:
COMPRESSION=JPEG
Band 3 Block=21600x1 Type=Byte, ColorInterp=Blue
Image Structure Metadata:
COMPRESSION=JPEG
The important information for this tutorial is the Upper Left, Lower Left, Upper Right, Lower Right lines. These tell you the pixel and line values of each corner. The Upper Left, in this case, is at 0,0, and the Lower Right is at 21600,10800.
Step 4: Georeference the Image
Georeferencing in this case means to create metadata describing the geographic position of each of the corners of the image. Using the information gained in Step 3 and gdal_translate
, you can assign georeference information to the file. This creates a VRT file from world_200401.jpg
image, bluemarble1.vrt
. VRT files are XML files that contain the information about a particular transformation, in this case the gdal_translate
step. You will use it again in the next step to create your final set of tiles. gdal_translate
allows you to do multiple file output types including major image file formats. Using VRT outputs allows you to essentially put off making output files until the last step. This increases efficiency and decreases your wait time for individual steps if you're doing the command line. Here's the command you would run:
gdal_translate -of VRT -a_srs EPSG:4326 -gcp 0 0 -180 90 -gcp 21600 0 180 90 -gcp 21600 10800 180 -90 world_200401.jpg bluemarble1.vrt
There's a lot of information on that line, so here it is broken out:
-of
is output format, in this case VRT.-a_srs
assigns a spatial reference system to the file. That tells any application consuming it what coordinate system is being used. In this case, it is using EPSG:4326, which is the same as WGS84, the coordinate system used by Google Earth.-gcp
, or ground control point, assigns coordinates to positions in the file. In this case, you actually only need three points, since the image is a rectangle and therefore the fourth point can be easily identified. For-gcp
, define the gcp by setting the pixel and then line number, and then the longitude and latitude. Each of those is separated by a space.- The last two parameters are the origin file and the target file.
Step 5: Warp the Image
The original image wasn't created for a round globe, it was created to appear to lie flat. In GIS terms, it is projected, which means that it is a two-dimensional representation of a three-dimensional object. Projection requires distorting the image so that it appears how you would expect a flat image of the Earth to look.
In order to get it to look right, you have to warp the image it to fit the globe. Fortunately GDAL provides a great tool for that too. Simply type gdalwarp -of VRT -t_srs EPSG:4326 bluemarble1.vrt bluemarble2.vrt
. This will create a new file, bluemarble2.vrt, which provides metadata about the warping procedure.
Step 6: Create the Tiles
You're almost done, but this part will take the longest. To create the tiles, type in gdal2tiles.py -p geodetic -k bluemarble2.vrt
. The -k
forces a KML output. This will create a directory structure with a super-overlay. As each of those image files has to be created separately, it takes awhile to run. For large images, you can now go, get a cup of coffee, take a nap, maybe get a light meal. When you're done, open up doc.kml
and observe the results!
也可以使用gdal_retile.py形成切片 发不到geoserver上
gdal_retile.py -levels 3 -ps 2048 2048 -co "TILED=YES" -co "BLOCKXSIZE=256" -co "BLOCKYSIZE=256" -s_srs EPSG:4326 -targetDir bmpyramid bluemarble2.vrt
Conclusion
This tutorial just scratches the surface of what GDAL can do, but it does provide a convenient mechanism for generating tiles. The core GDAL libraries are written in C++, but they provide bindings for Perl, Python, VB6, R, Ruby, Java, and C#/.NET, meaning you can easily incorporate GDAL into your own applications. Also, many of the utilities, including gdal2tiles
, are written in Python, making them easy to incorporate into Python applications.gdal2tiles
also has the ability to generate Google Maps API and OpenLayers pages.
欢迎大家来我的新家看一看 3wwang个人博客-记录走过的技术之路
gdal gdal2tiles.py 的使用的更多相关文章
- 瓦片切图工具gdal2tiles.py改写为纯c++版本
gdal2tiles.py是GDAL库中用于生成TMS瓦片的python代码,支持谷歌墨卡托EPSG:3857与经纬度EPSG:4326两种瓦片,输出png格式图像. gdal2tiles.py Mo ...
- 瓦片切图工具gdal2tiles.py改写为纯c++版本(二)
python这么火,C++/C#的程序员都生存不下去了,为啥还要干把python转写成c++的这种反动的事? 项目需要呗... gdal2tiles.py文件中有两个类是计算全球墨卡托与WGS84两种 ...
- 部分GDAL工具功能简介
主要转自http://blog.csdn.net/liminlu0314?viewmode=contents 部分GDAL工具功能简介 gdalinfo.exe 显示GDAL支持的各种栅格文件的信息. ...
- window 安装gdal和python
进入 http://www.gisinternals.com/release.php 中下载下图(也可以不是这个版本但是下载的python和gdal一定要版本对应) 1.点击下图中release-17 ...
- 【GIS】使用GDAL为Leaflet切图
一.参考资料 https://commenthol.github.io/leaflet-rastercoords/ https://github.com/commenthol/gdal2tiles-l ...
- C++代码利用pthread线程池与curl批量下载地图瓦片数据
项目需求编写的程序,稳定性有待进一步测试. 适用场景:在网络地图上,比如天地图与谷歌地图,用户用鼠标在地图上拉一个矩形框,希望下载该矩形框内某一层级的瓦片数据,并将所有瓦片拼接成一个完整的,包含地理坐 ...
- linux下gdal的python包的安装
由于python包是从C++包编译出来的,所以需要先下载源码进行编译安装.1. gdal下载http://download.osgeo.org/gdal/CURRENT/sudo ./configur ...
- gdal_merge.py
1 gdal_merge.py: 合并(Merge)/镶嵌(Mosaic)工具.要求图像必须是相同坐标系统.具有相同的波段数:可以不同分辨率,可以有重叠区域(后加入图像覆盖先加入的图像). 注意:只能 ...
- Centos7.3 编译安装GDAL以及Python的GDAL包
参考: https://cryolite.iteye.com/blog/176382 https://blog.csdn.net/a13326021319/article/details/782505 ...
随机推荐
- shiro 密码的MD5盐值加密
- 关于网上“强大的vim”矫正!!
参考链接在这里: 强大的vim配置文件,让编程更随意 - ma6174 - 博客园, http://www.cnblogs.com/ma6174/archive/2011/12/10/2283393. ...
- vue.js入门操作
1.vue框架是经典的MVVM模式, .vue文件是模板文件模板文件又分为3个部分一 <template></template>(html部分)二 <script> ...
- hibernate 性能问题
hibernate的目标是快速开发,数据库数据转换为java对象,业务逻辑中只使用对象进行处理. 性能开销有: 数据-对象转换时间,状态记录(是否为脏数据),sql优化(默认是对表字段全部更新,增加网 ...
- php设置头部让任何域名请求
header("Access-Control-Allow-Origin: *"); // 允许任意域名发起的跨域请求...
- python遇到的错误
今天学习文件遇到这个错误. 这是在 text_files\vvvv.txt 之间加一个\ 就可以了,变成 text_files\\vvvv.txt,运行成功
- CSS 美化radio checkbox
CSS 样式 <style type="text/css"> .option-input { -webkit-appearance: none; -moz-appear ...
- common mistake of closure in loops
[common mistake of closure in loops] 下例中item引用的始终是最后一个值. function showHelp(help) { document.getEleme ...
- macaca自动化测试以及配置环境问题
macaca 测试和环境问题 标签(空格分隔): macaca自动化配置环境问题 macaca环境变量配置 基本环境需要准备的东西: JDK的安装及环境配置:(1.8) Node.js的安装及环境配置 ...
- Tcp/Ip 三次握手与四次挥手
1. TCP/IP模型 我们一般知道OSI的网络参考模型是分为7层:“应表会传网数物”——应用层,表示层,会话层,传输层,网络层,数据链路层,物理层.而实际的Linux网络层协议是参照了OSI标准,但 ...