『壹』 如何將debug版本的so庫變成release版本
由於Smart_Gis安卓客戶端的需要,所以需要把gdal_2.3.1庫編譯成安卓平台Arm64_v8a版本的.so庫。由於要求是android NDK版本 12以上,Android API 21以上的支持。
所以在本次編譯過程中全部需要使用64位的操作系統,NDK及編譯器,編譯環境為 操作系統:Ubuntu 16.04 LTS,安卓NDK版本:android-ndk-r14b,geos, proj。
1,最近遇到了之前編譯的geos, proj, skia, gdal庫都為debug版本,本人也沒有特意的去驗證,但是由於項目上線發布的原因,需要將所有的依賴的庫發布成release版本的,一來可以增加庫的穩定性,二來可以減小體積。
2,由於 gdal 庫在編譯成release版本的過程中可以參考我的gdal庫安卓平台編譯這篇文章,並在Application.mk文件裡面增加 APP_OPTIM := release 然後 ndk-build命令進行編譯就行了,如何驗證生成的庫是不是debug版本的呢?
在庫目錄下執行 readelf -S + 文件名 ,在列印出的信息中如果能查看到有debug字元即是debug版本。
3,到這一步我們需要找到我們打開我們編譯的工具鏈的位置,找到strip這個可執行程序,比如說 GCC存儲目錄或者本人的Android 交叉編譯工具鏈的位置。然後找到存儲.so庫的目錄下並復制當前目錄加上需要裁剪的庫名到工具鏈strip存放目錄下,
如下圖所示並回車。
4,再次查看SO庫並會發現該庫的體積縮小了很多,並使用readelf -S + 庫名列印出來的信息沒有debug字元。
『貳』 地圖投影以及Proj4的使用
簡單來說,Map Projection是將球體或橢球體表面的經緯度轉換成一個平面的位置的過程,即 將球面坐標轉化為平面坐標的過程便稱為投影 。
是一種正軸(投影面的軸(圓錐圓柱的軸線,平面的法線)與地球橢球體的旋轉軸重合)、 等角(地面上的任意兩條直線的夾角,在經過地球投影繪制到圖紙上以後,其夾角保持不變)、圓柱投影 。由荷蘭地圖學家墨卡托(G.Mercator)於1569年創立。假設一個與地軸方向一致的圓柱切或割於地球,按等角條件,將經緯網投影到圓柱面上,將圓柱面展為平面後,即得到本投影。現在主流的網上地圖信息服務所採用的投影均是Mercator投影,該投影方法也適用於航空和航海領域。
proj.4 是 OSGeo 出品的開源GIS工具,專注於地圖的投影表達以及轉換,截止到目前 官方 最新的發布版本是4.9.3。官方介紹:
由於我用的是Mac Pro,蘋果用戶如果沒有安裝Proj可以使用homebrew來安裝
proj4官方列出了 三個應用 ,分別是:
可以使用如下命令來顯示在 proj里的內置的有關地圖投影的參數
一個典型的命令如下,詳細的參數說明請參考 這里 :
命令行測試如下圖:
目前CocoaPod上proj4最高的版本是4.8.0,當然你也可以集成到iOS項目中去
Map Projection WiKi
WGS84、World Geodetic System
proj.4官方介紹
proj.4通用參數
地圖投影List
Proj.4庫的編譯及使用
GIS坐標轉換庫Proj.4的使用
PROJ4初探
spatialreference