GVKun编程网logo

ios – GDAL – 扭曲y轴坐标系(Apple MapKit)的扭曲图像使图像颠倒(扭曲图7)

3

对于ios–GDAL–扭曲y轴坐标系(AppleMapKit)的扭曲图像使图像颠倒感兴趣的读者,本文将提供您所需要的所有信息,我们将详细讲解扭曲图7,并且为您提供关于AppleID怎么解绑银行卡App

对于ios – GDAL – 扭曲y轴坐标系(Apple MapKit)的扭曲图像使图像颠倒感兴趣的读者,本文将提供您所需要的所有信息,我们将详细讲解扭曲图7,并且为您提供关于Apple ID怎么解绑银行卡 Apple ID解除绑定银行卡教程、apple id怎么防止钓鱼短信 apple id钓鱼短信预防方法、Apple Java Extensions(com.apple.eawt)如何使用JDK 7及更高版本?、apple music2021最热歌曲榜单在哪看?apple music2021最热歌曲榜单查询方法的宝贵知识。

本文目录一览:

ios – GDAL – 扭曲y轴坐标系(Apple MapKit)的扭曲图像使图像颠倒(扭曲图7)

ios – GDAL – 扭曲y轴坐标系(Apple MapKit)的扭曲图像使图像颠倒(扭曲图7)

我有一张地图的图像,我希望在iOS上的内置地图上进行地理参考和叠加.我正在以编程方式使用GDAL.

第1步(确定) – 地理参考(工作正常)

目前我正在计算三个地面控制点的GeoTransform(6个系数),以便对图像进行地理参考,它给出了正确的6个系数.

第2步(问题) – Warp图像获取GeoTransform以获取新的变换图像

图像变得颠倒了!这是因为目标坐标系统(Apple在MapKit中自己的坐标系统)具有反转的y轴,当你向南时,它会增加.

如何让GDAL正确地扭曲图像(同时给我一个正确的GeoTransform来配合它)?

我试过的

在变形之前,我在原始GeoTransform中更改了值5/6.这给出了图像的正确扭曲,但新的GeoTransform是错误的.

当前代码

- (WarpResultC*)warpImageWithGeoTransform:(NSArray<NSNumber*>*)geoTransformArray sourceFile:(Nsstring*)inFilepath destinationFile:(Nsstring*)outFilepath
{
    GDALAllRegister();

    GDALDriverH hDriver;
    GDALDataType eDT;
    GDALDatasetH hDstDS;
    GDALDatasetH hSrcDS;

    // Open the source file.
    hSrcDS = GDALOpen( inFilepath.UTF8String,GA_ReadOnly );
    CPLAssert( hSrcDS != NULL );

    // Set the GeoTransform on the source image
    // HERE IS WHERE I NEED NEGATIVE VALUES OF 4 & 5 TO GET A PROPER IMAGE
    double geoTransform[] = { geoTransformArray[0].doubleValue,geoTransformArray[1].doubleValue,geoTransformArray[2].doubleValue,geoTransformArray[3].doubleValue,-geoTransformArray[4].doubleValue,-geoTransformArray[5].doubleValue };
    GDALSetGeoTransform(hSrcDS,geoTransform);

    // Create output with same datatype as first input band.
    eDT = GDALGetRasterDataType(GDALGetRasterBand(hSrcDS,1));

    // Get output driver (GeoTIFF format)
    hDriver = GDALGetDriverByName( "GTiff" );
    CPLAssert( hDriver != NULL );

    // Create a transformer that maps from source pixel/line coordinates
    // to destination georeferenced coordinates (not destination
    // pixel line).  We do that by omitting the destination dataset
    // handle (setting it to NULL).
    void *hTransformArg = GDALCreateGenImgProjTransformer( hSrcDS,NULL,FALSE,1 );
    CPLAssert( hTransformArg != NULL );

    // Get approximate output georeferenced bounds and resolution for file.
    double adfDstGeoTransform[6];
    int nPixels=0,nLines=0;
    CPLErr eErr = GDALSuggestedWarpOutput( hSrcDS,GDALGenImgProjTransform,hTransformArg,adfDstGeoTransform,&nPixels,&nLines );
    CPLAssert( eErr == CE_None );
    GDALDestroyGenImgProjTransformer( hTransformArg );

    // Create the output file.
    hDstDS = GDALCreate( hDriver,outFilepath.UTF8String,nPixels,nLines,4,eDT,NULL );
    CPLAssert( hDstDS != NULL );

    // Write out the projection deFinition.
    GDALSetGeoTransform( hDstDS,adfDstGeoTransform );

    // copy the color table,if required.
    GDALColorTableH hCT = GDALGetRasterColorTable( GDALGetRasterBand(hSrcDS,1) );
    if( hCT != NULL )
        GDALSetRasterColorTable( GDALGetRasterBand(hDstDS,1),hCT );

    // Setup warp options.
    GDALWarpOptions *psWarpOptions = GDALCreateWarpOptions();
    psWarpOptions->hSrcDS = hSrcDS;
    psWarpOptions->hDstDS = hDstDS;

    /* -------------------------------------------------------------------- */
    /*      Do we have a source alpha band?                                 */
    /* -------------------------------------------------------------------- */
    bool enableSrcAlpha = GDALGetRasterColorInterpretation( GDALGetRasterBand(hSrcDS,GDALGetRasterCount(hSrcDS) )) == GCI_AlphaBand;
    if(enableSrcAlpha) { printf( "Using band %d of source image as alpha.\n",GDALGetRasterCount(hSrcDS) ); }

    /* -------------------------------------------------------------------- */
    /*      Setup band mapping.                                             */
    /* -------------------------------------------------------------------- */
    if(enableSrcAlpha)
        psWarpOptions->nBandCount = GDALGetRasterCount(hSrcDS) - 1;
    else
        psWarpOptions->nBandCount = GDALGetRasterCount(hSrcDS);

    psWarpOptions->panSrcBands = (int *) CPLMalloc(psWarpOptions->nBandCount*sizeof(int));
    psWarpOptions->panDstBands = (int *) CPLMalloc(psWarpOptions->nBandCount*sizeof(int));

    for( int i = 0; i < psWarpOptions->nBandCount; i++ )
    {
        psWarpOptions->panSrcBands[i] = i+1;
        psWarpOptions->panDstBands[i] = i+1;
    }

    /* -------------------------------------------------------------------- */
    /*      Setup alpha bands used if any.                                  */
    /* -------------------------------------------------------------------- */
    if( enableSrcAlpha )
        psWarpOptions->nSrcAlphaBand = GDALGetRasterCount(hSrcDS);

    psWarpOptions->nDstAlphaBand = GDALGetRasterCount(hDstDS);

    psWarpOptions->pfnProgress = GDALTermProgress;

    // Establish reprojection transformer.
    psWarpOptions->pTransformerArg = GDALCreateGenImgProjTransformer( hSrcDS,hDstDS,0.0,1 );
    psWarpOptions->pfnTransformer = GDALGenImgProjTransform;

    // Initialize and execute the warp operation.
    GDALWarpOperation oOperation;
    oOperation.Initialize( psWarpOptions );
    CPLErr warpError = oOperation.ChunkAndWarpImage( 0,GDALGetRasterXSize( hDstDS ),GDALGetRasterYSize( hDstDS ) );
    CPLAssert( warpError == CE_None );

    GDALDestroyGenImgProjTransformer( psWarpOptions->pTransformerArg );
    GDALDestroyWarpOptions( psWarpOptions );
    GDALClose( hDstDS );
    GDALClose( hSrcDS );

    WarpResultC* warpResultC = [WarpResultC new];
    warpResultC.geoTransformValues = @[@(adfDstGeoTransform[0]),@(adfDstGeoTransform[1]),@(adfDstGeoTransform[2]),@(adfDstGeoTransform[3]),@(adfDstGeoTransform[4]),@(adfDstGeoTransform[5])];
    warpResultC.newX = nPixels;
    warpResultC.newY = nLines;

    return warpResultC;
}

解决方法

您可以使用 GDALCreateGenImgProjTransformer执行此操作.从文档:
创建一个从源像素/线坐标映射到目标地理坐标坐标(不是目标像素线)的变换器.我们通过省略目标数据集句柄(将其设置为NULL)来做到这一点.

从gdal_alg.h开始的任务的其他相关信息:
创建图像到图像变换器.

此函数创建一个转换对象,该对象从一个图像上的像素/线坐标映射到另一个图像上的像素/线坐标.图像可能在不同的坐标系中被地理参考,并且可以使用GCP在它们的像素/线坐标和地理参考坐标之间进行映射(与应该使用它们的地理变换的默认假设相反).

此变换器可能执行三个连接转换.

第一阶段是从源图像像素/线坐标到源图像地理参考坐标,并且可以使用地理变换来完成,或者如果没有使用从GCP导出的多项式模型来定义.如果使用GCP,则使用GDALGCPTransform()完成此阶段.

第二阶段是将源坐标系中的投影更改为目标坐标系,假设它们不同.这是使用GDALReprojectionTransform()在内部完成的.

第三阶段是从目标图像地理配准坐标转换为目标图像坐标.这是使用目标图像地理转换完成的,如果不可用,则使用从GCP派生的多项式模型.如果使用GCP,则使用GDALGCPTransform()完成此阶段.如果在创建转换时hDstDS为NULL,则跳过此阶段.

Apple ID怎么解绑银行卡 Apple ID解除绑定银行卡教程

Apple ID怎么解绑银行卡 Apple ID解除绑定银行卡教程

Apple ID怎么解绑银行卡?Apple ID解除绑定银行卡教程。用户一般会通过APP store购买下载应用,普遍情况自己的apple id都会绑定银行卡,如果你银行卡换了不想绑了该怎么解除呢?让小编给大家介绍一下Apple ID解除绑定银行卡教程吧!

手机:【App Store】-【点击账号】-【查看Apple ID】-【付款信息】-勾选【银行卡或无】即可

Apple ID怎么解绑银行卡 Apple ID解除绑定银行卡教程

电脑:登录【iTunes】,选择【个人中心】-【付款信息】-编辑【付款方式】,选择【银行卡或无】,再点击下方的【完成即可】

Apple ID怎么解绑银行卡 Apple ID解除绑定银行卡教程

apple id怎么防止钓鱼短信 apple id钓鱼短信预防方法

apple id怎么防止钓鱼短信 apple id钓鱼短信预防方法

apple id怎么防止钓鱼短信?apple id钓鱼短信预防方法。近日有消息传出,有不少用户反映,近阶段有一种新的欺骗方式出现,不法分子将会通过普通短信的方式试图对你的apple id进行钓鱼,那么apple id怎么防止钓鱼短信?让小编告诉大家apple id钓鱼短信预防方法吧。

apple id怎么防止钓鱼短信 apple id钓鱼短信预防方法

Apple ID钓鱼短信是什么情况?

有用户报告一种新型的欺骗方式已经出现,不法分子会通过普通短信的方式来试图对你的Apple ID进行钓鱼,用户会收到类似的信息:和此号码关联的Apple ID即将到期,请尽快在supportatapple.com确认你的细节-Apple Inc.。

细心的用户应该可以发现,该链接是钓鱼的典型方式,通过建立一个伪装的官方网站(这些链接一般和官方网址类似,只需多加注意,便可进行区分)来让用户输入Apple ID和密码等私密信息,这些信息就会传到黑客的服务器上,不法分子就可以记录下这些信息并加以利用。

其实类似的事件时有发生,除了苹果要不断加强设备安全之外,用户也需要加强防范意识,这样才能阻止类似钓鱼事件的快速传播和蔓延。

那么该怎么预防钓鱼短信的发生呢?大家可以开启apple id的双重认证方法,具体方法如下:

1. 首先,我们需要进入苹果官方网站,点击网站右上方的“技术支持”选项,并选择 Apple ID,如图所示。

apple id怎么防止钓鱼短信 apple id钓鱼短信预防方法

2. 在选择 Apple ID 之后跳转的页面上点击“管理账户”“管理您的 Apple ID”,输入 Apple ID 和密码之后将进入 Apple ID 管理界面。

apple id怎么防止钓鱼短信 apple id钓鱼短信预防方法

3. 点击左侧的“密码和账户安全”选项,并回答此前设置的安全提示问题,开始两步验证的设置。

apple id怎么防止钓鱼短信 apple id钓鱼短信预防方法

4. 进入两步验证之后,你将会遇到等待 3 天之后才能开启两步验证的情况。注意:小编的操作到这里中断,以下部分为网友的截图。

apple id怎么防止钓鱼短信 apple id钓鱼短信预防方法

5. 添加手机号码之后,在弹出的验证框中输入收到的短信验证码。

apple id怎么防止钓鱼短信 apple id钓鱼短信预防方法

6. 手机号码验证完毕之后,我们需要验证自己的苹果设备,锋友 mrtyzq 验证的是自己的 iPhone6Plus,这一步,我们仍然需要输入验证码。

apple id怎么防止钓鱼短信 apple id钓鱼短信预防方法

7. 设备验证成功之后,我们会得到一个非常非常重要的恢复密钥,最好将它抄录在一个或者几个不会丢失的本子上,留着以后备用。然后,系统将会要求我们输入恢复密钥以确认我们已经拥有了密钥。

apple id怎么防止钓鱼短信 apple id钓鱼短信预防方法

注意,完成这一步之后,我们将成功开启两步认证。那么,这个两步认证应该如何使用呢?开启两步认证之后,我们需要输入验证码才能对 iCloud 等内容进行操作。而如果你想要修改 Apple ID 的密码,则需要输入上面获得的恢复密钥,如下图所示。

apple id怎么防止钓鱼短信 apple id钓鱼短信预防方法

PS:需要注意的是,苹果帐号(Apple ID)密码和恢复密钥最好写在不会丢失的本子上,如果这两者都丢失了,那就意味着你的 Apple ID 作废了,连苹果公司都没有办法找回。

Apple Java Extensions(com.apple.eawt)如何使用JDK 7及更高版本?

Apple Java Extensions(com.apple.eawt)如何使用JDK 7及更高版本?

TL; DR:苹果已经在 Java中删除了本机功能支持.特别是触控板手势不再工作.我写了一个使用JNI完成工作的库.看下面我的答案.

我正在寻找几个小时,使Apple Java Extensions在JDK 7或8上工作.我一直在努力尝试所有的想法.互联网上的所有线程关于这个简单地指责JDK.我认为这应该是可以解决的,因为它在JDK 6中有效.为了清楚起见,我可以使其在JDK 6中工作,但是我不希望这个遗留依赖关系,因为不是所有使用我的应用程序的人都有JDK 6或者知道安装吧,让我们说.目标是使用可安装的每个版本的Java(大于JDK 6)的操作系统X功能(菜单栏,手势,处理程序等)运行的双击可用JAR文件.

解决方法

自从OS X El Capitan的开发者预览版本开始,99%的普通计算机用户就不可能安装Java 6,所以这对我来说已经不再是一个选择.我终于决定编写一个本地库,通过JNI通知Java手势.该项目运行良好,由 GitHub托管.

看看这里:
https://github.com/mcourteaux/MultiTouch-Gestures-Java

apple music2021最热歌曲榜单在哪看?apple music2021最热歌曲榜单查询方法

apple music2021最热歌曲榜单在哪看?apple music2021最热歌曲榜单查询方法

      apple music最近推出了2021年度最热歌曲榜单,里面收录了大陆地区被人收听最多的前100首歌曲,那么apple

music2021最热歌曲榜单在哪看?下面小编给大家介绍apple music2021最热歌曲榜单查询方法,一起来看看吧。

      apple music2021最热歌曲榜单在哪看?apple music2021最热歌曲榜单查询方法

      1、打开app

      2、点击浏览

      3、在近期更新中可以看到榜单

      4、点击进入即可收听

      以上这篇文章就是apple music2021最热歌曲榜单查询方法,更多精彩内容尽在小编!

关于ios – GDAL – 扭曲y轴坐标系(Apple MapKit)的扭曲图像使图像颠倒扭曲图7的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于Apple ID怎么解绑银行卡 Apple ID解除绑定银行卡教程、apple id怎么防止钓鱼短信 apple id钓鱼短信预防方法、Apple Java Extensions(com.apple.eawt)如何使用JDK 7及更高版本?、apple music2021最热歌曲榜单在哪看?apple music2021最热歌曲榜单查询方法等相关知识的信息别忘了在本站进行查找喔。

本文标签: