kiwi路网.docx
- 文档编号:25883892
- 上传时间:2023-06-16
- 格式:DOCX
- 页数:31
- 大小:964.90KB
kiwi路网.docx
《kiwi路网.docx》由会员分享,可在线阅读,更多相关《kiwi路网.docx(31页珍藏版)》请在冰豆网上搜索。
kiwi路网
Kiwi路网存储是类似金字塔的结构,
定义1.分包(dividedpacel|regularparcels).包含同种性质特征的集合.
定义2.包(pacel).一种组织数据的方式,为矩形区域,内含各种数据,划分规则包就是按层级进行网格化的过程.
定义3.域(region).一种组织数据的方式,为多边形,内含各种数据.
定义4.块(block).一种组织数据的方式,为矩形,内含各种数据.
定义5.块集(blockset).一种组织数据的方式,为矩形,内含各种数据.
定义6.级别(level).即为不同的比例尺.
/**
*AllDataManagementFrame
*@seeKiwiFormatSpecificationVer.1.22[5]
*/
typedefstructtagALLDATMANFRM{
UCHARucSysRestrIndent[64];//System-specificIdentification
UCHARucAuthIndent[64];//DataauthorIdentification
UCHARucSysIndent[32];//SystemIdentification
UCHARucFormatVer[64];//FormatVersionNumber
UCHARucDataVer[64];//DataVersionNumber
UCHARucDiskTitle[128];//DiskTitle
UCHARucDataContents[8];//DataContents
UCHARucMediaVer[32];//MediaVersionNumber
UCHARucDataArea[16];//DataCoverage
USHORTusLogiBlkSize;//LogicalSectorSize
USHORTusSectorSize;//SectorSize
UCHARucBGDefInfo[2];//BackgroundDataDefaultInformation
ST_LVLMANINFORstLvlManInfor;//LevelManagementInformation
ST_MANHEADRECstManHeadRec[7];//ASequenceofManagementHeaderTables
//ExtentedData
ST_HIGHWAY_MAPDATstHighwayMapData;//HighWayMapData
}ST_ALLDATMANFRM,*PST_ALLDATMANFRM;
Alldataframe指向PacelData
LevelManagementDistributionHeader
/**
*ParcelDataManagementDistributionHeader
*@seeKiwiFormatSpecificationVer.1.22[6.1]
*/
typedefstructDNA_EXPORTtagPCLDATMANFRM{
//UCHARucFileNmDesFlag:
1;//FileNameDesignationFlag
UCHARucSignUp:
1;//North/SouthFlag
UCHARucSignDown:
1;//North/SouthFlag
UCHARucSignLeft:
1;//East/WestFlag
UCHARucSignRight:
1;//East/WestFlag
USHORTusLvlManRecCnt;//TotalNumberofLevelManagementRecords
/*
USHORTusBlkSetManRecCnt;//*TotalNumberofBlockSetManagementRecords
ULONGulHeadSize;//*HeaderSize
*/
ULONGulAllUpCoor;//Longitude/Latitude(inunitsof1/8seconds)
ULONGulAllDownCoor;//Longitude/Latitude(inunitsof1/8seconds)
ULONGulAllLeftCoor;//Longitude/Latitude(inunitsof1/8seconds)
ULONGulAllRightCoor;//Longitude/Latitude(inunitsof1/8seconds)
/*
ULONGulLvlManRecSize;//*SizeofLevelManagementRecord
ULONGulBlkSetManRecSize;//*SizeofBlockSetManagementRecord
ULONGulBlkManRecSize;//*SizeofBlockManagementRecord
*/
PST_PCLLVLMANRECpstPclLvlManRec;//ASequenceofLevelManagementRecords
tagPCLDATMANFRM(){
usLvlManRecCnt=0;
pstPclLvlManRec=NULL;
}
INTNewPclDatManFrm(){
if(usLvlManRecCnt>0){
pstPclLvlManRec=newST_PCLLVLMANREC[usLvlManRecCnt];
if(pstPclLvlManRec==NULL){
returnFAIL;
}
}
returnSUCCESS;
}
~tagPCLDATMANFRM(){
delete[]pstPclLvlManRec;
}
}ST_PCLDATMANFRM,*PST_PCLDATMANFRM;
LevelManagementrecord
/**
*LevelManagementRecord
*@seeKiwiFormatSpecificationVer.1.22[6.1.1]
*/
typedefstructtagPCLLVLMANREC{
CHARch6LvlID:
6;//LevelNumber
//USHORTus04IntCnt:
4;//*NumberofRegularParcelsIntegratedontheNext-higherLevel
//USHORTus04DivCnt:
4;//*NumberofRegularParcelsDividedontheNext-lowerLevel
USHORTus05MainMapBasDatFrmRecCnt:
5;//NumberofBasicDataFrameManagementRecordsofMainMapDataFrame
USHORTus05MainMapExtDatFrmRecCnt:
5;//NumberofExtendedDataFrameManagementRecordsofMainMapDataFrame
USHORTus05RoutGuidBasDatFrmRecCnt:
5;//NumberofBasicDataFrameManagementRecordsofRouteGuidanceDataFrame
USHORTus05RoutGuidExtDatFrmRecCnt:
5;//NumberofExtendedDataFrameManagementRecordsofRouteGuidanceDataFrame
USHORTusPclDivCntX[3];//NumberofLongitudinalParcelsdivided(Type1,2,3)
USHORTusPclDivCntY[3];//NumberofLatitudinalParcelsdivided(Type1,2,3)
ULONGul09BlkSetCntX:
9;//NumberofLongitudinalBlockSets
ULONGul09BlkSetCntY:
9;//NumberofLatitudinalBlocksSets
ULONGul09BlkCntX:
9;//NumberofLongitudinalBlocks
ULONGul09BlkCntY:
9;//NumberofLatitudinalBlocks
ULONGul09PclCntX:
9;//NumberofLongitudinalParcels
ULONGul09PclCntY:
9;//NumberofLatitudinalParcels
ULONGulRuler[5];//DisplayScaleFlag(1-5)
ULONGulNodeRecSize;//NodeRecordSize
//ULONGulBlkSetHeadOffset;//OffsettotheTopoftheBlockSetManagementRecords
PST_PCLBLKSETMANRECpstPclBlkSetManRec;//ASequenceofBlockSetManagementRecords
ST_DISPCLSstDispCls;//DisplayClasses
tagPCLLVLMANREC(){
ul09BlkSetCntX=0;
ul09BlkSetCntY=0;
pstPclBlkSetManRec=NULL;
}
INTNewPclLvlManRec(){
if(ul09BlkSetCntX*ul09BlkSetCntY>0){
pstPclBlkSetManRec=newST_PCLBLKSETMANREC[ul09BlkSetCntX*ul09BlkSetCntY];
if(pstPclBlkSetManRec==NULL){
returnFAIL;
}
}
returnSUCCESS;
}
~tagPCLLVLMANREC(){
delete[]pstPclBlkSetManRec;
}
}ST_PCLLVLMANREC,*PST_PCLLVLMANREC;
(1)头结构中包含该层level号,以及和上下level的对应包的融合关系
(5)记录着BasicDataFrameManagement数目,它包含如下我们需求框架
Blocksetmanagementrecord
/**
*BlockSetManagementRecord
*@seeKiwiFormatSpecificationVer.1.22[6.1.2]
*/
typedefstructtagPCLBLKSETMANREC{
//CHARcLvlID;//*LevelNumber
UCHARucBlkSetID;//BlockSetNumber
//ULONGulBlkManTblOffset;//OffsettoBlockManagementTable
//ULONGulBlkManTblSize;//SizeofBlockManagementTable
PST_PCLBLKMANRECpstPclBlkManRec;//ASequenceofBlockManagementRecords
tagPCLBLKSETMANREC(){
pstPclBlkManRec=NULL;
}
INTNewPclBlkSetManRec(inta_iBlkCnt){
if(a_iBlkCnt>0){
pstPclBlkManRec=newST_PCLBLKMANREC[a_iBlkCnt];
if(pstPclBlkManRec==NULL){
returnFAIL;
}
}
returnSUCCESS;
}
~tagPCLBLKSETMANREC(){
delete[]pstPclBlkManRec;
pstPclBlkManRec=NULL;
}
}ST_PCLBLKSETMANREC,*PST_PCLBLKSETMANREC;
Blocksetnumber表示的是在上述描述的coveragearea中该blockset的编号因为level数据都是按块存储,这个值不大于255
Offset指向下级block地址
/**
*BlockManagementRecord
*@seeKiwiFormatSpecificationVer.1.22[6.2.1]
*/
typedefstructtagPCLBLKMANREC{
ULONGulPclManInfoAddr;//AddressofParcelManagementInformation
ULONGulPclManInfoSize;//SizeofParcelManagementInformation
CHARcPclManInfoFileName[12];//FilenameofParcelManagementInformation
}ST_PCLBLKMANREC,*PST_PCLBLKMANREC;
在这个addr到parcelmanagementinformation的代码中出现问题,一直没有解决,通过给地址获取的信息不对,
/**
*ParcelManagementInformation
*@seeKiwiFormatSpecificationVer.1.22[6.3]
*/
typedefstructtagPCLMANINFO{
UCHARuc2PclManCntTypeID:
2;//ParcelsTypeNumbergivenbytheNumberofManagedParcels
UCHARucPclManListTypeID:
8;//ParcelManagementListTypeNumber
ULONGulGuidePclManListOffset;//OffsettoRouteGuidanceParcelManagementList
PST_PCLMANRECpstPclManRec;//MainMapParcelManagementList
PST_PCLMANRECpstGuideManRec;//RouteGuidanceParcelManagementList
tagPCLMANINFO(){
pstPclManRec=NULL;
pstGuideManRec=NULL;
}
INTNewPclManInfo(inta_iPclManListCnt,inta_iRoutGuidManListCnt){
if(a_iPclManListCnt>0){
pstPclManRec=newST_PCLMANREC[a_iPclManListCnt];
if(pstPclManRec==NULL){
returnFAIL;
}
}
if(a_iRoutGuidManListCnt>0){
pstGuideManRec=newST_PCLMANREC[a_iRoutGuidManListCnt];
if(pstGuideManRec==NULL){
returnFAIL;
}
}
returnSUCCESS;
}
~tagPCLMANINFO(){
delete[]pstPclManRec;
delete[]pstGuideManRec;
}
}ST_PCLMANINFO,*PST_PCLMANINFO;
分四种情况去找MainMapdataFrame(还没弄明白这四种情况什么意思)Routguidance类似
/**
*MainMapParcelManagementRecord
*@seeKiwiFormatSpecificationVer.1.22[6.3.1]
*/
typedefstructtagPCLMANREC{
ULONGulMMapDatFrmAddr;//FirstAddressofMainMapDataFrame(Parcel)
ULONGulMMapDatFrmSize1;//Size1ofMainMapDataFrame(ParcelManagementTypeNumberis0,1,2,100)
ULONGulMMapDatFrmSize2;//Size2ofMainMapDataFrame(ParcelManagementTypeNumberis1,2)
CHARchMMapDatFrmFileName[12];//FileNameofMainMapDataFrame(ParcelManagementTypeNumberis100)
}ST_PCLMANREC,*PST_PCLMANREC;
/**
*MainMapDataFrame
*@seeKiwiFormatSpecificationVer.1.22[7.1]
*/
typedefstructtagMAINMAPDATFRM{
UCHARucReadFlag;//bit0RoadDataFrame(0:
notRead1:
haveRead)
//bit1BackgroundDataFrmae(0:
notRead1:
haveRead)
//bit2NameDataFrame(0:
notRead1:
haveRead)
//bit3DistributionHead(0:
notRead1:
haveRead)
ST_MAINMAPDHstMainMapDH;//MainMapDistributionHeader
ST_ROADDATFRMstRoadDatFrm;//RoadDataFrame
ST_BGDATFRMstBGDatFrm;//BackgroundDataFrame
ST_NAMEDATFRMstNameDatFrm;//NameDataFrame
//AdditionalDataAFrame
//AdditionalDataBFrame
}ST_MAINMAPDATFRM,*PST_MAINMAPDATFRM;
/**
*RoadDataFrame
*@seeKiwiFormatSpecificationVer.1.22[7.2]
*/
typedefstructtagROADDATFRM{
//CHARcRgnLvlID;//*LevelofRoutePlanningDataCorrespondingtoParcelData
UCHARucDispClsCnt;//NumberofDisplayClasses
//UCHARucAddDatCnt;//*CountofAdditionalData
//USHORTusIntSecCnt;//*TotalNumberofIntersections
//ULONGulHeadSize;//*HeaderSize
PST_DISPCLSRECpstDispClsRec;//ASequenceofDisplayClassManagementRecords
//PST_PASCODEDATFRMpstPasCodeDatFrm;//PassageCodeDataFrame
//PST_COMPNODEDATFRMpstCompNodeDatFrm;//CompositeNodeDataFrame
tagROADDATFRM(){
pstDispClsRec=NULL;
ucDispClsCnt=0;
//pstPasCodeDatFrm=NULL;
//pstCompNodeDatFrm=NULL;
}
INTNewRoadDatFrm(){
if(ucDispClsCnt>0){
pstDispClsRec=newST_DISPCLSREC[ucDispClsCnt];
if(pstDispClsRec==NULL){
returnFAIL;
}
}
returnSUCCESS;
}
~tagROADDATFRM(){
delete[]pstDispClsRec;
//deletepstPasCodeDatF
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- kiwi 路网