- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我想加载ecw文件。我使用的是 Mac OSX 10.9.1。
我正在尝试使用此方法来做到这一点:
//*****************************************************************
//* Lecture d'un fichier ECW dont le nom est passÈ en paramËtre.
//*****************************************************************
int charge_ecw( char *nom_fichier )
{
NCSFileView *pNCSFileView;
NCSFileViewFileInfo *pNCSFileInfo;
NCSError eError = NCS_SUCCESS;
UINT8 **p_p_output_line = NULL;
UINT8 *p_output_buffer = NULL;
UINT32 x_size, y_size, number_x, number_y;
UINT32 start_x, start_y, end_x, end_y;
UINT32 line;
UINT32 band;
UINT32 nBands;
UINT32 *band_list = NULL; // list of individual bands to read, may be subset of actual bands
// Open the input NCSFileView
eError = NCScbmOpenFileView(nom_fichier, &pNCSFileView, NULL);
if (eError != NCS_SUCCESS) {
printf("Could not open view for file:%s\n",nom_fichier);
printf("Error = %s\n", NCSGetErrorText(eError));
return(1);
}
NCScbmGetViewFileInfo(pNCSFileView, &pNCSFileInfo);
x_size = pNCSFileInfo->nSizeX; // Largeur en pixels de l'image ECW
y_size = pNCSFileInfo->nSizeY; // Hauteur en pixels de l'image ECW
nBands = pNCSFileInfo->nBands; // Nombre de canaux par pixel de l'image ECW (7 pour une image Landsat)
printf("Input file is [%ld x %ld by %d bands]\n", (long)x_size, (long)y_size, nBands);
// Have to set up the band list. Compatible with ER Mapper's method.
// In this example we always request all bands.
band_list = (UINT32 *) malloc(sizeof(UINT32) * nBands);
if( !band_list ) {
printf("Error - unable to malloc band list\n");
NCScbmCloseFileView(pNCSFileView);
return(1);
}
for( band = 0; band < nBands; band++ )
band_list[band] = band;
// On donne les coordonnÈes du coin supÈrieur gauche (start_x,start_y)
// et du coin infÈrieur droit (end_x,end_y) de la zone qu'on souhaite
// lire dans l'image source ECW.
start_x = 0;
start_y = 0;
end_x = 799;
end_y = 599;
// On donne la largeur (number_x) et la hauteur (number_y) qu'on souhaite
// pour l'image de destination. Dans cet exemple, le bloc de pixels lu dans
// l'image source sera donc redimensionnÈ, car il sera rÈduit de 800x600
// pixels ‡ 400x300 pixels.
number_x = 400;
number_y = 300;
printf("Region : [%d,%d] to [%d,%d] for [%d,%d]\n", start_x, start_y, end_x, end_y, number_x, number_y);
eError = NCScbmSetFileView(pNCSFileView,
nBands, band_list,
start_x, start_y, end_x, end_y,
number_x, number_y);
if( eError != NCS_SUCCESS) {
printf("Error = %s\n", NCSGetErrorText(eError));
NCScbmCloseFileView(pNCSFileView);
free(band_list);
return(1);
}
p_output_buffer = (UINT8 *) malloc( sizeof(UINT8) * number_x * nBands);
p_p_output_line = (UINT8 **) malloc( sizeof(UINT8 *) * nBands);
if( !p_p_output_line || !p_output_buffer) {
printf("Malloc error for output buffers\n");
NCScbmCloseFileView(pNCSFileView);
free(band_list);
if( p_p_output_line )
free((char *) p_p_output_line);
if( p_output_buffer )
free((char *) p_output_buffer);
return(1);
}
for(band = 0; band < nBands; band++ )
p_p_output_line[band] = p_output_buffer + (band * number_x);
// Read each line of the compressed file
for( line = 0; line < number_y; line++ ) {
NCSEcwReadStatus eReadStatus;
eReadStatus = NCScbmReadViewLineBIL( pNCSFileView, p_p_output_line);
if (eReadStatus != NCSECW_READ_OK) {
printf("Read line error at line %d\n",line);
printf("Status code = %d\n", eReadStatus);
NCScbmCloseFileView(pNCSFileView);
free(band_list);
free((char *) p_p_output_line);
free((char *) p_output_buffer);
return(1);
}
// ---------------------------------------------------------------------------------------
// Dans le tableau unidimensionnel p_output_buffer on a les valeurs des pixels d'une ligne
// dÈcompressÈe de l'image.
// Dans ce tableau 1D, les unes ‡ la suite des autres, on a tout d'abord les valeurs du
// 1er canal pour tous les pixels, puis les valeurs du 2Ëme canal pour tous les pixels,
// puis les valeurs du 3Ëme canal pour tous les pixels, et ainsi de suite.
// On peut donc ici utiliser les valeurs contenues dans p_output_buffer pour remplir les
// pixels de la classe Image_ms.
// ...
// ...
// ---------------------------------------------------------------------------------------
}
free((char *) p_p_output_line);
free((char *) p_output_buffer);
// Make the second argument below TRUE if this is the last view of the file and you
// want the file closed, otherwise it will be kept open in the cache. This can
// sometimes be an problem when writing plugins.
NCScbmCloseFileViewEx(pNCSFileView, FALSE);
free(band_list);
return(0);
}
我包括:
#include "path/Downloads/libecwj2-3.3/Source/include/NCSECWClient.h"
#include "path/Downloads/libecwj2-3.3/Source/include/NCSErrors.h"
但是我有一些这样的错误:
error: call to member function 'Add' is ambiguous
bRet = a.Add(0,1);
那么,有什么解决办法吗?我想过忘记选项?或者根本无法使用?
PS:我还没有编译。我正在做:
./configure
make ( here the errors )
最佳答案
您缺少一些链接器标志。可能类似于 -lecwj2,我不确定,但它会“-l”加上 ECWJ 安装的 .a 文件的名称,减去“lib”前缀。将其作为命令行上的 GCC/Clang 的参数(如果您使用的是 Xcode,这将被隐藏在对话框中的某处。)
关于c++ - 在 Mac OS X 上使用 EWS SDK Linux 加载 ecw 文件 -> 错误链接符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21647162/
自从 ECW(Hexagon Geospatial/Intergraph)最近发布了具有重大更改(5.0、5.1 和 5.2)的新版本以来,大多数(全部?)在线信息已经过时。 大多数指令会导致如下错误
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,
如您所知,GDAL 已添加到 OpenCV 第 3 版中。我有一张 ecw 卫星图像,想读取并显示它。我已经尝试使用名为:gdal-image.cpp 的 OpenCV 示例。它有一行用于读取输入图像
所以我想加载ecw文件。我使用的是 Mac OSX 10.9.1。 我正在尝试使用此方法来做到这一点: //**********************************************
我是一名优秀的程序员,十分优秀!