1. 程式人生 > >影像座標重投影程式碼

影像座標重投影程式碼

原始碼如下,其中pInput為輸入影像路徑,pOut為輸出影像路徑,gcs為輸出影像的地理座標系

int DoReproject(string pInput, string pOut,string gcs)
{
    GDALAllRegister();
    CPLSetConfigOption("GDAL_FILENAME_IS_UTF8", "NO");
    GDALDataset* pDTIn = (GDALDataset*)GDALOpen(pInput.c_str(), GA_ReadOnly);
    if (pDTIn == NULL)
    {
        printf("檔案開啟失敗: %s\n"
, pInput.c_str()); return -1; } ///判斷是否與目標座標系統一直 OGRSpatialReference obj_OSRS; obj_OSRS.SetWellKnownGeogCS(gcs.c_str()); char *pszWKT = NULL; obj_OSRS.exportToWkt(&pszWKT); ///建立從UTM到84座標系的座標轉換關係 void * hTransformArg = GDALCreateGenImgProjTransformer((GDALDatasetH)pDTIn, pDTIn->GetProjectionRef(), NULL, pszWKT, false
, 0, 1); if (hTransformArg == NULL) { printf("無法建立轉換方程!\n"); GDALClose((GDALDatasetH)pDTIn); return -1; } //計算輸出影像範圍 int nWidth = 0; int nHeight = 0; double dOutTransform[6]; ///hTransformArg:座標轉換關係 CPLErr eErr = GDALSuggestedWarpOutput((GDALDatasetH)pDTIn, GDALGenImgProjTransform, hTransformArg, dOutTransform, &nWidth, &nHeight); /*if (eErr == CE_None) { GDALDestroyGenImgProjTransformer(hTransformArg); return -1; }*/
//建立輸出影像 GDALDataType eType = pDTIn->GetRasterBand(1)->GetRasterDataType(); int nBandCnt = pDTIn->GetRasterCount(); const char* format = "GTiff"; GDALDriver* pDriver = GetGDALDriverManager()->GetDriverByName(format); GDALDataset* pDTReproj = (GDALDataset*)GDALCreate((GDALDriverH)pDriver, pOut.c_str(), nWidth, nHeight, nBandCnt, eType, NULL); if (pDTReproj == NULL) { printf("建立失敗: %s\n", pOut.c_str()); return -1; } pDTReproj->SetProjection(pszWKT); pDTReproj->SetGeoTransform(dOutTransform); //psWarpOptions set GDALWarpOptions *psWarpOptions = GDALCreateWarpOptions(); psWarpOptions->hDstDS = pDTReproj;///輸出影象指標 psWarpOptions->hSrcDS = pDTIn;///原始影象指標 psWarpOptions->nBandCount = 0;///處理的波段資料,0為處理所有波段 psWarpOptions->eResampleAlg = GRA_Bilinear;///重取樣方式 psWarpOptions->panSrcBands = NULL; psWarpOptions->panDstBands = NULL; psWarpOptions->pfnProgress = GDALTermProgress; psWarpOptions->pTransformerArg = GDALCreateGenImgProjTransformer((GDALDatasetH)pDTIn, GDALGetProjectionRef(pDTIn), (GDALDatasetH)pDTReproj, GDALGetProjectionRef(pDTReproj), FALSE, 0.0, 1); //建立從原始到輸出結果的投影變換引數 psWarpOptions->pfnTransformer = GDALGenImgProjTransform; //座標變換函式指標 //真正的重投影 GDALWarpOperation oOperation; oOperation.Initialize(psWarpOptions); oOperation.ChunkAndWarpImage(0, 0, nWidth, nHeight); //銷燬轉換 GDALDestroyGenImgProjTransformer(psWarpOptions->pTransformerArg); GDALDestroyWarpOptions(psWarpOptions); GDALClose(pDTIn); GDALClose(pDTReproj); return true; }

相關推薦

影像座標投影程式碼

原始碼如下,其中pInput為輸入影像路徑,pOut為輸出影像路徑,gcs為輸出影像的地理座標系 int DoReproject(string pInput, string pOut,string gcs) { GDALAllRegister();

java+gdal實現影像投影

java+gdal實現影像重投影 java+gdal實現影像重投影 GDAL功能很強大,用來處理影像資料,今天我要做的是java程式碼寫的影像重投影,網上參考資料大都是c++和python寫的,也看了一些大牛寫的程式碼,最後寫出了java版的,eclipse寫的,直接引用一個gdal.jar

MRT(MODIS Reprojection Tool)安裝、影像批量拼接、投影和格式轉換

一、安裝MRT(MODIS Reprojection Tool)   安裝準備:檢查是否安裝java.exe。Java版本至少為Java 2 Runtime Environment version 1.5或者是Java 2 SDK version 1.5或者更高的版本。在W

程式碼

/* http://meyerweb.com/eric/tools/css/reset/ v2.0 | 20110126 License: none (public domain)*/ html, body, div, span, applet, object, iframe,h1, h2, h3, h4

互動投影程式碼邏輯(可單獨定製)

  #include <windows.h> #include <iostream> using namespace std; #include "camerads.h" #include "strsafe.h" #include <highgui.

Flex AIR 程式碼示例

重啟程式碼: var app:WindowedApplication = WindowedApplication(FlexGlobals.topLevelApplication); var mgr:ProductManager = new ProductManager("airappins

Python+OGR庫學習(四):投影shp檔案並另存,屬性表保持不變

程式碼關鍵點 1、首先要定義好轉換引數 2、主要操作物件是要素,需要提前建立好輸出檔案,然後遍歷所有要素,對每一個幾何物件進行座標轉換 3、輸出檔案的欄位屬性定義需要從輸入檔案讀取 程式碼思路 1、匯入相關包,切換路徑,註冊驅動 2、定義轉換關係 3、開啟輸入檔案,讀取到圖層

OpenCV計算變換與投影的矩陣說明

本篇部落格主要討論opencv中兩個函式中幾何變換(矩陣)的對應關係,以下函式介面摘自opencv-2.4.8官方文件 1.Finds an object pose from 3D-2D point correspondences. bool solve

前端開發CSS樣式程式碼,reset.css

自己找的一段樣式重置程式碼,方便自己開發使用,如有更好的歡迎在評論去給個連結 /* 清除內外邊距 */ body, h1, h2, h3, h4, h5, h6, hr, p, blockquote, /* structural elements 結構元素 */ dl, dt, dd

地理座標投影座標 你必須知道的地理座標系和投影座標系

原 你必須知道的地理座標系和投影座標系 置頂 2017年03月24日 17:34:21 ConardLi 閱讀數:32428

什麼是柵格資料向量資料?加帶號直接投影就可以了

柵格就是常見的圖片資料,比如JPG、tiff等等,而向量資料就是你再Arcgis裡面畫出來的點啊線啊那些資料 加帶號直接重投影就可以了。 地理處理-搜尋工具-投影 arcgis 預設你第一次新增

含有導航欄的視圖裡tableView的座標問題(swift程式碼理論和OC相通)

檢視程式碼如下,注意我兩個tableView設定的座標,和下面位置對比。 <span style="font-family:Arial;font-size:18px;">

實現手機程式碼

private void reboot() { Context context = getActivity().getBaseContext(); Toast.ma

座標系統投影變換分帶方法

地球橢球體又稱“地球橢圓體”和“地球扁球體”。代表地球大小和形狀的數學曲面。以長半徑和扁率表示。因它十分迫近於橢球體,故通常以參考橢球體表示地球橢球體的形狀和大小。橢圓繞其短軸旋轉所成的形體,並近似於地球大地水準面。大地水準面的形狀即用相對於參考橢球體的偏離來表示。通常所說地球的形狀和大小,實際上就

SLAM | 雙目投影誤差雅克比推導

1. 雙目重投影誤差項(給的是歸一化座標) //i時刻相機座標系下的map point座標 Eigen::Vector3d pts_camera_i = pts_i / inv_dep_i; //i時刻IMU座標系下的map point座標 Eig

Windows server 2003 IIS6.0虛擬主機下301定向程式碼

當你準備好好看這篇文章的時候,你應該已經知道了301重定向的作用與意義了,那麼這裡就不多加解釋了。一、域名“domain.com”重定向到“www.domain.com”httpd.ini檔案配置的程式碼如下,放置位置:網站根目錄[ISAPI_Rewrite] CacheC

ArcGIS中註記層投影問題的解決

問題描述:         1.因為註記層的特殊性,直接改變平面投影,當註記層座標系與工作空間座標系不一致時,會導致文字偏移,定位框不一致。                                  2.設定平面座標系後,再投影,直接導致註記層圖形丟失,僅保留了

地理座標投影座標轉換程式,基於ArcGIS Engine

通常需要將經緯度座標與投影座標相互轉換,下面是一些原始碼,在ArcEngine中實現。 投影轉經緯度 private IPoint PRJtoGCS(double x, double y)           {             IPoint pPoint

sql去程式碼

最近做專案,兩張表都是百萬資料的表,其中一主一從,客戶要根據主表從從表中獲取一條有效資料,從表資料很多髒資料,開始用sql去重發現速度很慢,後來用程式碼去重了 列表查詢,一般就是幾十條資料,先查出主表id的集合,再根據主表的集合查所有從表資料,程式碼去重的關鍵是,查從表時

ArcGIS柵格影像怎麼從WGS84地理座標轉成Xian80投影座標

事情是這樣的,我下載了一個WGS84座標系的影像圖,需要載入到Xian80投影座標系下,所以需要對影像圖進行座標系的轉換 1、因為涉及到兩個參考橢球的問題,首先需要計算七引數,如何計算七引數,請參考我之前的一篇文章 https://www.cnblogs.com/yiliangmi/p/9897435.h