虚拟文件系统¶
- 作者
Jeff McKenna
- 联系方式
jmckenna在gatewaygeomatics.com
- 最后更新
2016-06-23
目录
虚拟文件系统¶
从gdal版本1.8.0开始,可以读取和显示“虚拟” 矢量和栅格文件, 例如指向URL的远程文件,或包含Ogr数据源的压缩本地.zip文件,并在MapServer中显示。有用的mapfile参数包括**/vsizip/、/vsigzip/、/vsitar/、/vsicurl/**
有关虚拟文件系统的详细信息¶
由初始开发人员撰写的博客文章 Even Rouault
GDAL TRAC page
直接在MapServer中显示压缩文件¶
下面的示例使用压缩的shapefile“test.zip”,其中包含3个文件:
test.shp
test.dbf
test.zip
步骤1:验证格式是否已启用“虚拟”¶
执行“ogrinfo--formats”(对于矢量)或“gdalinfo--formats”(对于栅格),检查格式是否在驱动程序名称旁边列出“v”,例如:
> ogrinfo --formats
Supported Formats:
PCIDSK -raster,vector- (rw+v): PCIDSK Database File
netCDF -raster,vector- (rw+s): Network Common Data Format
PDF -raster,vector- (rw+vs): Geospatial PDF
DB2ODBC -raster,vector- (rw+): IBM DB2 Spatial Database
ESRI Shapefile -vector- (rw+v): ESRI Shapefile
MapInfo File -vector- (rw+v): MapInfo File
...
shapefile旁边的“(rw+v)”表示支持虚拟文件。
步骤2:通过ogrinfo/gdalinfo测试访问¶
使用带**/vsizip/**的ogrinfo总结压缩形状文件的功能。跟随 通过MapServer的OGR矢量层 记录如何将ogrinfo命令与层一起使用的示例,例如:
> ogrinfo /vsizip/test.zip/test.shp test -summary
请注意,“test.zip”存在于运行ogrinfo命令的同一目录中。
INFO: Open of `/vsizip/test.zip/test.shp'
using driver `ESRI Shapefile' successful.
Layer name: test
Metadata:
DBF_DATE_LAST_UPDATE=2000-03-17
Geometry: Polygon
Feature Count: 665
Extent: (-2750564.750000, -936638.500000) - (3583872.500000, 4673125.000000)
Layer SRS WKT:
(unknown)
AREA: Real (15.3)
PERIMETER: Real (15.3)
...
步骤3:配置MapServer层¶
一旦您确认可以使用ogrinfo(或gdalinfo for graster)读取功能,那么我们可以尝试在mapserver中创建地图。
警告
对于这些虚拟层,连接参数需要完整(绝对)路径。
LAYER
NAME "test"
TYPE POLYGON
STATUS ON
CONNECTIONTYPE OGR
CONNECTION "/vsizip/C:/ms4w/apps/test/data/test.zip/test.shp"
DATA "test"
CLASS
NAME "test"
STYLE
COLOR 240 240 240
OUTLINECOLOR 199 199 199
END
END
END # layer
注解
如果zip中没有比shapefile预期的文件,则可以省略连接(test.shp)中的文件名。当您省略它时,zip被识别为一个目录,它的逻辑与在一个目录上执行ogrinfo的逻辑相同。
步骤4:测试 Mapfile¶
验证MapServer是否可以通过使用 shp2img 效用:
shp2img -m mymapfile.map -o test.png -all_debug 5
msDrawMap(): rendering using outputformat named png (AGG/PNG).
msDrawMap(): WMS/WFS set-up and query, 0.000s
GDAL: GDALOpen(/vsizip/C:/ms4w/apps/test/data/test.zip/test.shp, this=07D691D8) succeeds as ESRI Shapefile.
Shape: 492 features read on layer 'test'.
GDAL: GDALClose(/vsizip/C:/ms4w/apps/test/data/test.zip/test.shp, this=07D691D8)
msDrawMap(): Layer 0 (test), 0.016s
msDrawMap(): Drawing Label Cache, 0.000s
msDrawMap() total time: 0.031s
msSaveImage(ttt.png) total time: 0.000s
msFreeMap(): freeing map at 06289688.
在MapServer中直接显示远程压缩文件¶
我们还可以使用**/vsicurl/和/vsizip显示可通过HTTP访问的外部压缩文件。/**
通过ogrinfo/gdalinfo测试访问¶
> ogrinfo -ro /vsizip/vsicurl/http://download.osgeo.org/mapserver/docs/vsicurl-test.zip/test.shp test -summary
配置MapServer层¶
LAYER
NAME "test"
TYPE POLYGON
STATUS ON
CONNECTIONTYPE OGR
CONNECTION "/vsizip/vsicurl/http://download.osgeo.org/mapserver/docs/vsicurl-test.zip/test.shp"
DATA "test"
CLASS
NAME "test"
STYLE
COLOR 240 240 240
OUTLINECOLOR 199 199 199
END
END
END # layer
警告
虚拟层的“成本”/在MapServer中的显示速度不如常规层快。
直接在MapServer中显示远程(栅格)文件¶
也可以使用**/vsicurl通过http访问远程栅格文件。/**
通过gdalinfo测试访问¶
> gdalinfo /vsicurl/http://download.osgeo.org/gdal/data/gtiff/small_world.tif
Driver: GTiff/GeoTIFF
Files: /vsicurl/http://download.osgeo.org/gdal/data/gtiff/small_world.tif
Size is 400, 200
Coordinate System is:
GEOGCS["WGS 84",
DATUM["WGS_1984",
SPHEROID["WGS 84",6378137,298.257223563,
AUTHORITY["EPSG","7030"]],
AUTHORITY["EPSG","6326"]],
PRIMEM["Greenwich",0],
UNIT["degree",0.0174532925199433],
AUTHORITY["EPSG","4326"]]
Origin = (-180.000000000000000,90.000000000000000)
Pixel Size = (0.900000000000000,-0.900000000000000)
...
配置MapServer层¶
LAYER
NAME "test"
TYPE RASTER
STATUS ON
DATA "/vsicurl/http://download.osgeo.org/gdal/data/gtiff/small_world.tif"
CLASS
NAME "test"
END
END # layer