GDAL作为开源GIS底层空间数据的访问库,在开源GIS领域扮演着极重要的角色,在开源世界一个开源项目基于其它开源项目建立的事实面前,它实际有点开源GIS的基石的感觉。其对多种影像格式的出色支持,使其也被应用在很多的著名软件中,像Google Earth的底层在访问遥感影像时就使用了它、甚至ESRI的有些产品再访问多种数据格式影像时也用到了GDAL。DAL将OGR库纳入后,其对简单矢量数据的支持也很不错。
这些天需要搞投影转化,希望搞一个比较通用的能对多种投影方式都能适用,为了软件的可靠性又不希望从最底层的公式开始编写,于是就查阅了Proj4的文档。
一番折腾后发现Proj4尽管编程接口很简单,但是其定义坐标系时用的参数全是带格式的长字符串,这样写一两个程序作固定的坐标系统之间转换倒还方便,但是要做成类似于FME那样能在多种源和目标坐标系统之间自由选择就会比较麻烦,对于一些参数需要变化的投影就还要再包装一层来逐个设置参数。更为头疼的是接着发现Proj4的Nad文件夹下定义的投影中(epsg文件)没有关于Beijing54,Xian80的投影都没有datum选项,郁闷不知道怎么回事情,网上也没找到答案。
# Beijing_1954_GK_Zone_19N
<21479> +proj=tmerc +lat_0=0.000000000 +lon_0=111.000000000 +k=1.000000 +x_0=500000.000 +y_0=0.000 +ellps=krass +units=m
美国的就有(红色)
# NAD_1927_StatePlane_Alaska_2_FIPS_5002
<26732> +proj=tmerc +lat_0=54.000000000 +lon_0=-142.000000000 +k=0.999900 +x_0=152400.305 +y_0=0.000 +ellps=clrk66 +datum=NAD27 +to_meter=0.3048006096
记得OGR中用到Proj4,所以找出GDAL的源代码包看,果然有。其Data目录下有有一批*.csv,*.dat,*.wkt文件,ellipsoid.csv/gdal_datum.csv/gcs.csv/pcs.csv几个文件就分别定义了椭球体/大地基准/地理坐标系/投影坐标系,并且相当的完备(见识所限,我见过的没见过的都有,呵呵!)wkt就不用说了。看来就选用GDAL了,立即着手调试。