Proj 4庫的編譯及使用

2022-03-22 20:47:53 字數 3626 閱讀 9646

proj.4是開源gis最著名的地圖投影庫,grass gis, mapserver, postgis, thuban, ogdi, mapnik, topocad, gdal/ogr等軟體的投影都直接或間接的使用proj.4。

proj.4的功能主要有經緯度座標與地理座標的轉換,座標系的轉換,包括基準變換等,下面以命令列方式和程式設計方式來說明經緯度座標與地理座標轉換功能的使用。

git clone
mkdir -p build &&cd build	#進入proj.4工程目錄後,建立乙個構建目錄,並進入

# 使用cmake生成makefile,指定安裝路徑和生成庫型別為靜態庫

cmake -dcmake_install_prefix=./install -dbuild_libproj_shared=off ..

# 編譯

make

# 安裝,安裝的目錄是之前指定的目錄,就是當前目錄下的install目錄

make install

安裝完成之後進入install目錄,可以看到對應的標頭檔案和庫檔案。

> tree

.├── bin

│   ├── cs2cs

│   ├── geod

│   ├── nad2bin

│   └── proj

├── include

│   ├── geodesic.h

│   ├── proj_api.h

│   └── projects.h

├── lib

│   └── libproj.a

└── share

├── cmake

│   └── proj4

│   ├── proj4-config.cmake

│   ├── proj4-config-version.cmake

│   ├── proj4-targets.cmake

│   └── proj4-targets-release.cmake

├── man

│   ├── man1

│   │   ├── cs2cs.1

│   │   ├── geod.1

│   │   └── proj.1

│   └── man3

│   ├── geodesic.3

│   └── pj_init.3

└── proj

├── ch

├── epsg

├── esri

├── esri.extra

├── gl27

├── ignf

├── nad27

├── nad83

├── nad.lst

├── ntf_r93.gsb

├── null

├── nzgd2kgrid0005.gsb

├── other.extra

├── proj_def.dat

└── world

10 directories, 34 files

先使用cmake生成vs工程

cd build	# 先進入build目錄

# 下面設定了安裝目錄和編譯引數等

cmake -dcmake_install_prefix=d:/proj.4 -dbuild_libproj_shared=off -g"visual studio 12 win64" ..

開啟vs2013 x64本機命令列工具,然後進入build目錄,執行下面命令

編譯安裝完成後,可以進入d:\proj.4目錄檢視輸出的標頭檔案和庫檔案(以及share目錄下的一些資料檔案)。

使用以下**來做測試

#include #include #include "proj_api.h"

int main()

// 待轉換的座標(投影座標)

// 注意座標系定義中的+x_0=20500000,座標值應該也是帶有帶號的

projuv parr[4] = ,

, ,

};printf("deg_to_rad = %f (1度=%f弧度)\n",deg_to_rad,deg_to_rad);

// 逐點轉換

for(int i=0; i<4; i++)

// 釋放投影物件記憶體

pj_free(pj);

return 0;

}

編譯的時候,需要鏈結pthreadm兩個庫,因為前面編譯的時候,生成的是靜態庫。如果生成的是動態庫,則是不需要的。

test.cinstall目錄下寫的,所以指定的路徑是如下的。

gcc test.c -iinclude -llib -lproj -lpthread -lm -o test
執行結果如下:

> ./test

deg_to_rad = 0.017453 (1度=0.017453弧度)

--------------轉換第1點---------------

北京54投影 座標:20634500.000000,4660000.000000

北京54經緯度座標:118.611065, 40.462077

北京54投影 座標:20634500.000000,4660000.000000

--------------轉換第2點---------------

北京54投影 座標:20635000.000000,4661000.000000

北京54經緯度座標:118.617253, 40.471148

北京54投影 座標:20635000.000000,4661000.000000

--------------轉換第3點---------------

北京54投影 座標:20635500.000000,4659000.000000

北京54經緯度座標:118.622841, 40.452777

北京54投影 座標:20635500.000000,4659000.000000

--------------轉換第4點---------------

北京54投影 座標:20634000.000000,4662000.000000

北京54經緯度座標:118.605475, 40.480447

北京54投影 座標:20634000.000000,4662000.000000

proj4庫的編譯方法

其編譯方法非常簡單,分為三步 我的編譯環境為vs 2005 sp1 1 對原始碼資料夾進行解壓,在執行視窗使用dos命令進入原始碼的src資料夾,具體為cd命令,我的為 e proj 4.7.0 src。2.在vs2005安裝資料夾的vcvars32.bat 我的路徑為 c program file...

proj4庫的編譯方法

proj.4 其編譯方法非常簡單,分為三步 我的編譯環境為vs 2005 sp1 1 對原始碼資料夾進行解壓,在執行視窗使用dos命令進入原始碼的src資料夾,具體為cd命令,我的為 e proj 4.7.0 src。2.在vs2005安裝資料夾的vcvars32.bat 我的路徑為 c progr...

windows 編譯安裝PROJ 4

proj.4 是開源gis最著名的地圖投影庫,許多gis開源軟體的投影都直接使用proj.4的庫檔案。該專案遵循mit license,用c語言編寫,由usgs的gerald i.evenden在1980年代創立並一直維護到退休,後轉手到frank warmerdam手中。warmerdam現任os...