亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? shptree.c

?? 支持各種柵格圖像和矢量圖像讀取的庫
?? C
?? 第 1 頁 / 共 3 頁
字號:
        {            SHPDestroyTreeNode( psTreeNode->apsSubNode[i] );            psTreeNode->apsSubNode[i] =                psTreeNode->apsSubNode[psTreeNode->nSubNodes-1];            psTreeNode->nSubNodes--;            i--; /* process the new occupant of this subnode entry */        }    }/* -------------------------------------------------------------------- *//*      We should be trimmed if we have no subnodes, and no shapes.     *//* -------------------------------------------------------------------- */    return( psTreeNode->nSubNodes == 0 && psTreeNode->nShapeCount == 0 );}/************************************************************************//*                       SHPTreeTrimExtraNodes()                        *//*                                                                      *//*      Trim empty nodes from the tree.  Note that we never trim an     *//*      empty root node.                                                *//************************************************************************/void SHPAPI_CALLSHPTreeTrimExtraNodes( SHPTree * hTree ){    SHPTreeNodeTrim( hTree->psRoot );}/************************************************************************//*                              SwapWord()                              *//*                                                                      *//*      Swap a 2, 4 or 8 byte word.                                     *//************************************************************************/static void SwapWord( int length, void * wordP ){    int		i;    unsigned char	temp;    for( i=0; i < length/2; i++ )    {	temp = ((unsigned char *) wordP)[i];	((unsigned char *)wordP)[i] = ((unsigned char *) wordP)[length-i-1];	((unsigned char *) wordP)[length-i-1] = temp;    }}/************************************************************************//*                       SHPSearchDiskTreeNode()                        *//************************************************************************/static intSHPSearchDiskTreeNode( FILE *fp, double *padfBoundsMin, double *padfBoundsMax,                       int **ppanResultBuffer, int *pnBufferMax,                        int *pnResultCount, int bNeedSwap ){    int i;    int offset;    int numshapes, numsubnodes;    double adfNodeBoundsMin[2], adfNodeBoundsMax[2];/* -------------------------------------------------------------------- *//*      Read and unswap first part of node info.                        *//* -------------------------------------------------------------------- */    fread( &offset, 4, 1, fp );    if ( bNeedSwap ) SwapWord ( 4, &offset );    fread( adfNodeBoundsMin, sizeof(double), 2, fp );    fread( adfNodeBoundsMax, sizeof(double), 2, fp );    if ( bNeedSwap )    {        SwapWord( 8, adfNodeBoundsMin + 0 );        SwapWord( 8, adfNodeBoundsMin + 1 );        SwapWord( 8, adfNodeBoundsMax + 0 );        SwapWord( 8, adfNodeBoundsMax + 1 );    }          fread( &numshapes, 4, 1, fp );    if ( bNeedSwap ) SwapWord ( 4, &numshapes );/* -------------------------------------------------------------------- *//*      If we don't overlap this node at all, we can just fseek()       *//*      pass this node info and all subnodes.                           *//* -------------------------------------------------------------------- */    if( !SHPCheckBoundsOverlap( adfNodeBoundsMin, adfNodeBoundsMax,                                 padfBoundsMin, padfBoundsMax, 2 ) )    {        offset += numshapes*sizeof(int) + sizeof(int);        fseek(fp, offset, SEEK_CUR);        return TRUE;    }/* -------------------------------------------------------------------- *//*      Add all the shapeids at this node to our list.                  *//* -------------------------------------------------------------------- */    if(numshapes > 0)     {        if( *pnResultCount + numshapes > *pnBufferMax )        {            *pnBufferMax = (int) ((*pnResultCount + numshapes + 100) * 1.25);            *ppanResultBuffer = (int *)                 SfRealloc( *ppanResultBuffer, *pnBufferMax * sizeof(int) );        }        fread( *ppanResultBuffer + *pnResultCount,                sizeof(int), numshapes, fp );        if (bNeedSwap )        {            for( i=0; i<numshapes; i++ )                SwapWord( 4, *ppanResultBuffer + *pnResultCount + i );        }        *pnResultCount += numshapes;     } /* -------------------------------------------------------------------- *//*      Process the subnodes.                                           *//* -------------------------------------------------------------------- */    fread( &numsubnodes, 4, 1, fp );    if ( bNeedSwap  ) SwapWord ( 4, &numsubnodes );    for(i=0; i<numsubnodes; i++)    {        if( !SHPSearchDiskTreeNode( fp, padfBoundsMin, padfBoundsMax,                                     ppanResultBuffer, pnBufferMax,                                     pnResultCount, bNeedSwap ) )            return FALSE;    }    return TRUE;}/************************************************************************//*                         SHPSearchDiskTree()                          *//************************************************************************/int SHPAPI_CALL1(*) SHPSearchDiskTree( FILE *fp,                    double *padfBoundsMin, double *padfBoundsMax,                   int *pnShapeCount ){    int i, bNeedSwap, nBufferMax = 0;    unsigned char abyBuf[16];    int *panResultBuffer = NULL;    *pnShapeCount = 0;/* -------------------------------------------------------------------- *//*	Establish the byte order on this machine.	  	        *//* -------------------------------------------------------------------- */    i = 1;    if( *((unsigned char *) &i) == 1 )        bBigEndian = FALSE;    else        bBigEndian = TRUE;/* -------------------------------------------------------------------- *//*      Read the header.                                                *//* -------------------------------------------------------------------- */    fseek( fp, 0, SEEK_SET );    fread( abyBuf, 16, 1, fp );    if( memcmp( abyBuf, "SQT", 3 ) != 0 )        return NULL;    if( (abyBuf[3] == 2 && bBigEndian)        || (abyBuf[3] == 1 && !bBigEndian) )        bNeedSwap = FALSE;    else        bNeedSwap = TRUE;/* -------------------------------------------------------------------- *//*      Search through root node and it's decendents.                   *//* -------------------------------------------------------------------- */    if( !SHPSearchDiskTreeNode( fp, padfBoundsMin, padfBoundsMax,                                 &panResultBuffer, &nBufferMax,                                 pnShapeCount, bNeedSwap ) )    {        if( panResultBuffer != NULL )            free( panResultBuffer );        *pnShapeCount = 0;        return NULL;    }/* -------------------------------------------------------------------- *//*      Sort the id array                                               *//* -------------------------------------------------------------------- */    qsort(panResultBuffer, *pnShapeCount, sizeof(int), compare_ints);        return panResultBuffer;}/************************************************************************//*                        SHPGetSubNodeOffset()                         *//*                                                                      *//*      Determine how big all the subnodes of this node (and their      *//*      children) will be.  This will allow disk based searchers to     *//*      seek past them all efficiently.                                 *//************************************************************************/static int SHPGetSubNodeOffset( SHPTreeNode *node) {    int i;    long offset=0;    for(i=0; i<node->nSubNodes; i++ )     {        if(node->apsSubNode[i])         {            offset += 4*sizeof(double)                 + (node->apsSubNode[i]->nShapeCount+3)*sizeof(int);            offset += SHPGetSubNodeOffset(node->apsSubNode[i]);        }    }    return(offset);}/************************************************************************//*                          SHPWriteTreeNode()                          *//************************************************************************/static void SHPWriteTreeNode( FILE *fp, SHPTreeNode *node) {    int i,j;    int offset;    unsigned char *pabyRec = NULL;    offset = SHPGetSubNodeOffset(node);      pabyRec = (unsigned char *)         malloc(sizeof(double) * 4               + (3 * sizeof(int)) + (node->nShapeCount * sizeof(int)) );    memcpy( pabyRec, &offset, 4);    /* minx, miny, maxx, maxy */    memcpy( pabyRec+ 4, node->adfBoundsMin+0, sizeof(double) );    memcpy( pabyRec+12, node->adfBoundsMin+1, sizeof(double) );    memcpy( pabyRec+20, node->adfBoundsMax+0, sizeof(double) );    memcpy( pabyRec+28, node->adfBoundsMax+1, sizeof(double) );    memcpy( pabyRec+36, &node->nShapeCount, 4);    j = node->nShapeCount * sizeof(int);    memcpy( pabyRec+40, node->panShapeIds, j);    memcpy( pabyRec+j+40, &node->nSubNodes, 4);    fwrite( pabyRec, 44+j, 1, fp );    free (pabyRec);      for(i=0; i<node->nSubNodes; i++ )     {        if(node->apsSubNode[i])            SHPWriteTreeNode( fp, node->apsSubNode[i]);    }}/************************************************************************//*                            SHPWriteTree()                            *//************************************************************************/int SHPWriteTree(SHPTree *tree, const char *filename ){    char		signature[4] = "SQT";    int		        i;    char		abyBuf[32];    FILE                *fp;  /* -------------------------------------------------------------------- *//*      Open the output file.                                           *//* -------------------------------------------------------------------- */    fp = fopen(filename, "wb");    if( fp == NULL )     {        return FALSE;    }/* -------------------------------------------------------------------- *//*	Establish the byte order on this machine.	  	        *//* -------------------------------------------------------------------- */    i = 1;    if( *((unsigned char *) &i) == 1 )        bBigEndian = FALSE;    else        bBigEndian = TRUE;  /* -------------------------------------------------------------------- *//*      Write the header.                                               *//* -------------------------------------------------------------------- */    memcpy( abyBuf+0, signature, 3 );        if( bBigEndian )        abyBuf[3] = 2; /* New MSB */    else        abyBuf[3] = 1; /* New LSB */    abyBuf[4] = 1; /* version */    abyBuf[5] = 0; /* next 3 reserved */    abyBuf[6] = 0;    abyBuf[7] = 0;    fwrite( abyBuf, 8, 1, fp );    fwrite( &(tree->nTotalCount), 4, 1, fp );    /* write maxdepth */    fwrite( &(tree->nMaxDepth), 4, 1, fp );/* -------------------------------------------------------------------- *//*      Write all the nodes "in order".                                 *//* -------------------------------------------------------------------- */    SHPWriteTreeNode( fp, tree->psRoot );          fclose( fp );    return TRUE;}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人小视频免费观看| 欧美老年两性高潮| 欧美男男青年gay1069videost| 精品欧美乱码久久久久久| 亚洲色图在线播放| 韩国精品久久久| 欧美乱熟臀69xxxxxx| 亚洲美女精品一区| 粉嫩av一区二区三区粉嫩| 日韩一级片在线观看| 亚洲无人区一区| 91亚洲精品久久久蜜桃| 国产欧美日韩三级| 韩国成人在线视频| 精品sm在线观看| 蜜桃久久久久久久| 欧美一区二区三区婷婷月色| 亚洲精品成人天堂一二三| 成人免费高清在线| 久久久91精品国产一区二区精品| 日本v片在线高清不卡在线观看| 色婷婷久久一区二区三区麻豆| 久久精品男人天堂av| 国产精品一二三在| 久久精品视频一区二区三区| 国内精品视频666| 亚洲精品在线观看网站| 国内精品嫩模私拍在线| 精品国产乱码久久久久久免费| 欧美aaa在线| 欧美色图在线观看| 午夜伦理一区二区| 欧美日韩一区二区欧美激情| 亚洲一区二区偷拍精品| 欧美性受xxxx黑人xyx| 亚洲一卡二卡三卡四卡无卡久久| 欧美亚洲精品一区| 手机精品视频在线观看| 欧美一区二区三区四区高清| 麻豆91在线播放| 久久久久久久久久久久久久久99 | 一区二区高清视频在线观看| eeuss鲁一区二区三区| 国产精品不卡一区二区三区| 91网上在线视频| 亚洲一区二三区| 欧美福利电影网| 麻豆专区一区二区三区四区五区| 精品卡一卡二卡三卡四在线| 国产电影精品久久禁18| 一区免费观看视频| 欧美性猛交xxxxxx富婆| 奇米精品一区二区三区四区| 久久久久青草大香线综合精品| 国产电影一区二区三区| 国产精品传媒视频| 欧美日韩国产大片| 国产美女在线观看一区| 国产精品水嫩水嫩| 欧美色图片你懂的| 国内精品伊人久久久久av一坑| 国产精品麻豆网站| 欧美电影一区二区三区| 国产一区二区三区高清播放| 亚洲人成精品久久久久久| 欧美一级久久久| 成人深夜在线观看| 日韩国产在线观看一区| 久久你懂得1024| 欧美日韩一区不卡| 国产一区不卡视频| 午夜久久福利影院| 国产精品久久久久久久浪潮网站| 欧美丝袜丝nylons| 国产成人aaa| 丝袜美腿一区二区三区| 国产精品色噜噜| 欧美精品成人一区二区三区四区| 国产精品一区一区三区| 婷婷中文字幕一区三区| 国产日韩精品一区二区三区 | av不卡在线播放| 日本不卡视频在线| 亚洲精品一二三区| 久久精品一区二区三区四区 | 在线看国产一区| 国产成人亚洲综合a∨婷婷图片| 久久蜜桃av一区二区天堂| 久久久久久久久久久电影| 色噜噜夜夜夜综合网| 国产福利一区二区| 性欧美疯狂xxxxbbbb| 久久久久九九视频| 欧美一级电影网站| 欧美少妇性性性| 99免费精品视频| 国产91丝袜在线播放九色| 精品一区二区三区在线观看| 亚洲一区二区在线视频| 亚洲欧美偷拍卡通变态| 中文字幕av资源一区| 国产亚洲欧美一级| 久久久久久久综合| 精品日韩成人av| 精品剧情v国产在线观看在线| 欧美二区三区91| 欧美日韩国产在线观看| 欧美在线观看一区二区| 色综合中文综合网| 三级成人在线视频| 亚洲成av人片| 视频一区欧美精品| 免费黄网站欧美| 免费欧美日韩国产三级电影| 婷婷六月综合亚洲| 日韩精品1区2区3区| 午夜精品福利久久久| 日日夜夜一区二区| 蜜臀国产一区二区三区在线播放 | 日韩一二三区视频| 日韩亚洲欧美中文三级| 精品免费日韩av| 久久精品免视看| 中文字幕在线不卡| 亚洲制服丝袜在线| 丝袜美腿亚洲一区二区图片| 日韩成人免费电影| 精久久久久久久久久久| 国产91丝袜在线播放0| 白白色亚洲国产精品| 91搞黄在线观看| 欧美一区二区成人6969| 久久一留热品黄| 亚洲天堂免费看| 五月综合激情婷婷六月色窝| 日本成人在线网站| 国产成人av电影在线| 在线观看视频一区二区欧美日韩| 久久精品国产第一区二区三区| 日韩视频永久免费| 久久久亚洲精品一区二区三区| 国产精品你懂的在线| 亚洲乱码国产乱码精品精98午夜 | 91免费观看国产| 3d成人动漫网站| 久久精品无码一区二区三区| 亚洲欧美日韩系列| 免费高清在线视频一区·| 成人av资源下载| 欧美精品在线观看一区二区| 久久日一线二线三线suv| 亚洲女子a中天字幕| 日韩国产一二三区| av午夜精品一区二区三区| 91麻豆精品国产自产在线 | 精品国产制服丝袜高跟| 国产精品盗摄一区二区三区| 日本sm残虐另类| av电影一区二区| 精品国产亚洲在线| 亚洲欧美激情在线| 国产麻豆视频一区| 欧美男女性生活在线直播观看| 国产嫩草影院久久久久| 午夜精品久久久久影视| 成人激情免费视频| 欧美草草影院在线视频| 亚洲福利一二三区| 91女人视频在线观看| 亚洲精品一区二区三区精华液| 亚洲国产日产av| 91在线码无精品| 国产亚洲欧美激情| 久久精品国内一区二区三区| 色999日韩国产欧美一区二区| 久久久久久久久99精品| 久久精品久久久精品美女| 欧美视频自拍偷拍| 亚洲丝袜美腿综合| 国产激情一区二区三区| 91精品国产欧美一区二区18| 亚洲精品v日韩精品| aaa欧美色吧激情视频| 久久免费午夜影院| 激情小说欧美图片| 日韩视频免费直播| 奇米影视7777精品一区二区| 欧美日韩一区二区三区高清| 一区二区三区不卡视频在线观看| 成人午夜免费av| 亚洲国产电影在线观看| 成人一区二区三区视频在线观看| 日韩美女视频一区二区在线观看| 丝袜美腿成人在线| 欧美美女bb生活片| 日日夜夜精品视频天天综合网| 欧美人与z0zoxxxx视频| 天堂影院一区二区| 日韩西西人体444www| 日本欧美加勒比视频|