MAPGIS¶þ´Î¿ª·¢½²Òå

4¡¢ÍøÂç·ÖÎöÊý¾Ý²Ù×÷ »¡¶Î·ÖÅä·½°¸

ÉèÖû¡¶Î·ÖÅä·½°¸

short _SetAllocatedArcs(short ai,long *arcsLst,long len); ²ÎÊý£ºÈë¿Ú ai - ¹¤×÷ÇøºÅ

*arcsLst - »¡¶Î·ÖÅäÁбí

len -

»¡¶Î·ÖÅäÁÐ±í³¤¶È

³ö¿Ú ÎÞ

·µ»ØÖµ ³É¹¦·µ»Ø1£¬Ê§°Ü·µ»Ø0¡£

È¡ËùÓл¡¶ÎÊý

long _GetAllocatedArcsNum(short ai); ²ÎÊý£ºÈë¿Ú ai - ¹¤×÷ÇøºÅ

³ö¿Ú ÎÞ

·µ»ØÖµ ³É¹¦·µ»Ø»¡¶ÎÊý£¬Ê§°Ü·µ»Ø0¡£

È¡»¡¶Î·ÖÅä·½°¸

short _GetAllocatedArcs(short ai,long *arcsLst,long len); ²ÎÊý£ºÈë¿Ú ai - ¹¤×÷ÇøºÅ

len - »¡¶Î·ÖÅäÁÐ±í³¤¶È ³ö¿Ú *arcsLst - »¡¶Î·ÖÅäÁÐ±í ·µ»ØÖµ ³É¹¦·µ»Ø1£¬Ê§°Ü·µ»Ø0¡£

È¡»¡¶Î·ÖÅäÐÅÏ¢

short _GetArcAllocInfo(short ai,long li,ARC_ALLOC_INFO *allocInf); ²ÎÊý£ºÈë¿Ú ai - ¹¤×÷ÇøºÅ li - »¡¶ÎºÅ

³ö¿Ú *allocInf - ·µ»Ø»¡¶Î·ÖÅäÐÅÏ¢ ·µ»ØÖµ ³É¹¦=1£¬Ê§°Ü=0¡£ ÉèÖû¡¶Î·ÖÅäÐÅÏ¢

short _SetArcAllocInfo(short ai,long li,ARC_ALLOC_INFO *allocInf); ²ÎÊý£ºÈë¿Ú ai - ¹¤×÷ÇøºÅ li - »¡¶ÎºÅ

*allocInf - »¡¶Î·ÖÅäÐÅÏ¢ ³ö¿Ú

·µ»ØÖµ ³É¹¦=1£¬Ê§°Ü=0¡£

½áµãת½ÇȨֵ

ÉèÖýáµãµÄת½ÇȨֵÀàÐÍ

int WINAPI _SetLinkValType(short ai,long ni,short valType); ²ÎÊý£ºÈë¿Ú ai -¹¤×÷ÇøºÅ ni -½áµãºÅ

valtype -Á¬Í¨ÖµÊý¾ÝÀàÐÍ£¬¿ÉÒÔÊÇÏÂÁÐÖµÖ®Ò»£ºBIT_TYPE¡¢BYTE_TYPE¡¢

SHORT_TYPE¡¢LONG_TYPE¡¢FLOAT_TYPE¡¢DOUBLE_TYPE¡£

·µ»ØÖµ ·µ»Ø½áµãÊý¾ÝÀàÐÍ¡£Ïêϸ˵Ã÷Çë²ÎÔÄ_GetNodº¯Êý¡£

È¡½áµãµÄת½ÇȨֵ

int _GetNodLink(short ai,long ni,long li0,long li1, double *val,short *valtype); ²ÎÊý£ºÈë¿Ú ai -¹¤×÷ÇøºÅ ni -½áµãºÅ

li0 -ǰһÌõ»¡¶Î li1 -ºóÒ»Ìõ»¡¶Î

³ö¿Ú *val-·µ»Ø»¡¶ÎÁ¬Í¨Öµ£¬Á¬Í¨Öµ·¶Î§ÓÉÁ¬Í¨ÖµÊý¾ÝÀàÐ;ö¶¨

*valtype -·µ»ØÁ¬Í¨ÖµÊý¾ÝÀàÐÍ£¬¿ÉÒÔÊÇÏÂÁÐÖµÖ®Ò»£ºBIT_TYPE¡¢

BYTE_TYPE¡¢SHORT_TYPE¡¢LONG_TYPE¡¢FLOAT_TYPE¡¢DOUBLE_TYPE¡£

Èô²»ÐèÒª·µ»ØÁ¬Í¨ÖµÊý¾ÝÀàÐÍ£¬Ôòvaltype¿ÉÒÔΪNULL¡£

·µ»ØÖµ ·µ»Ø½áµãÊý¾ÝÀàÐÍ¡£Ïêϸ˵Ã÷Çë²ÎÔÄ_GetNodº¯Êý¡£

¸üнáµãµÄת½ÇȨֵ

int _UpdateNodLink(short ai,long ni, long li0,long li1,double *val); ²ÎÊý£ºÈë¿Ú ai -¹¤×÷ÇøºÅ ni -½áµãºÅ

li0 -ǰһÌõ»¡¶Î li1 -ºóÒ»Ìõ»¡¶Î

*val -»¡¶ÎÁ¬Í¨Öµ£¬Á¬Í¨ÖµµÄȡֵȡ¾öÓÚ_SetLinkValType ()º¯ÊýËùÉèÀà

ÐÍ£¬

³ö¿Ú ÎÞ

·µ»ØÖµ 1/0 - ³É¹¦/ʧ°Ü

˵Ã÷£ºÈç¹ûniºÅ½áµãÒѾ­ÓÐÁ¬Í¨·½Õó£¬ÄÇô¸Ãº¯Êý¸üÐÂÔ­À´µÄÁ¬Í¨·½Õó£»·ñÔò¾Í½«Á¬Í¨·½ÕóÌí¼Óµ½niºÅ½áµã£¬²¢¸Ä±ä½áµãÊý¾ÝÀàÐÍ(λ»òNOD_LINK)¡£

ÍøÂçÖÐÐÄÊý¾Ý

È¡ÍøÂçÖÐÐĽáµãÊý¾Ý

int _GetNodCenter(short ai,long ni,NOD_CENTER_INFO *ncinf); ²ÎÊý£ºÈë¿Ú ai -¹¤×÷ÇøºÅ

ni -½áµãºÅ ³ö¿Ú *ncinf-·µ»ØÍøÂçÖÐÐĽáµãÊý¾Ý

·µ»ØÖµ ·µ»Ø½áµãÊý¾ÝÀàÐÍ£¬Ïêϸ˵Ã÷Çë²ÎÔÄ_GetNodº¯Êý¡£ ¸üÐÂÍøÂçÖÐÐĽáµãÊý¾Ý

int _UpdateNodCenter(short ai,long ni,NOD_CENTER_INFO *ncinf); ²ÎÊý£ºÈë¿Ú ai -¹¤×÷ÇøºÅ

ni -½áµãºÅ *ncinf-ÍøÂçÖÐÐĽáµãÊý¾Ý

³ö¿Ú ÎÞ

·µ»ØÖµ 1/0 - ³É¹¦/ʧ°Ü

˵Ã÷£ºÈç¹ûniºÅ½áµãÒѾ­ÓÐÍøÂçÖÐÐĽáµãÊý¾Ý£¬ÄÇô¸Ãº¯Êý¸üÐÂÔ­À´µÄÍøÂçÖÐÐĽáµãÊý¾Ý£»·ñÔò¾Í½«ÍøÂçÖÐÐĽáµãÊý¾ÝÌí¼Óµ½niºÅ½áµã£¬²¢¸Ä±ä½áµãÊý¾ÝÀàÐÍ(λ»òNOD_CENTER)¡£

ÍøÂçÕ¾µãÊý¾Ý

È¡ÍøÂçÕ¾½áµãÊý¾Ý

int _GetNodStop(short ai,long ni,NOD_STOP_INFO *nsinf); ²ÎÊý£ºÈë¿Ú ai -¹¤×÷ÇøºÅ ni -½áµãºÅ

³ö¿Ú *nsinf-·µ»ØÍøÂçÖÕÖ¹½áµãÊý¾Ý

·µ»ØÖµ ·µ»Ø½áµãÊý¾ÝÀàÐÍ£¬Ê§°ÜÔò·µ»Ø£°£¬Çë²ÎÔÄ_GetNodº¯Êý¡£ ¸üÐÂÍøÂçÕ¾µãÊý¾Ý

int _UpdateNodStop(short ai,long ni,NOD_STOP_INFO *nsinf); ²ÎÊý£ºÈë¿Ú ai -¹¤×÷ÇøºÅ

ni -½áµãºÅ

*nsinf-ÍøÂçÖÕÖ¹½áµãÊý¾Ý

³ö¿Ú ÎÞ

·µ»ØÖµ 1/0 - ³É¹¦/ʧ°Ü

˵Ã÷£ºÈç¹ûniºÅ½áµãÒѾ­ÓÐÍøÂçÖÕÖ¹½áµãÊý¾Ý£¬ÄÇô¸Ãº¯Êý¸üÐÂÔ­À´µÄÍøÂçÖÕÖ¹½áµãÊý¾Ý£»·ñÔò¾Í½«ÍøÂçÖÕÖ¹½áµãÊý¾ÝÌí¼Óµ½niºÅ½áµã£¬²¢¸Ä±ä½áµãÊý¾ÝÀàÐÍ(λ»òNOD_STOP)¡£

ÍøÂçÕϰ­Êý¾Ý

È¡ÍøÂçÕϰ­½áµãÊý¾Ý

int _GetNodBarrier(short ai,long ni,NOD_BARRIER_INFO *nbinf);

²ÎÊý£ºÈë¿Ú ai -¹¤×÷ÇøºÅ

ni -½áµãºÅ ³ö¿Ú *nbinf-·µ»ØÍøÂçÕϰ­½áµãÊý¾Ý

·µ»ØÖµ ·µ»Ø½áµãÊý¾ÝÀàÐÍ£¬Ê§°ÜÔò·µ»Ø£°£¬Çë²ÎÔÄ_GetNodº¯Êý¡£ ¸üÐÂÍøÂçÕϰ­½áµãÊý¾Ý

int _UpdateNodBarrier(short ai,long ni,NOD_BARRIER_INFO *nbinf); ²ÎÊý£ºÈë¿Ú ai -¹¤×÷ÇøºÅ ni -½áµãºÅ

*nbinf -ÍøÂçÕϰ­½áµãÊý¾Ý ³ö¿Ú ÎÞ

·µ»ØÖµ 1/0 -³É¹¦/ʧ°Ü

˵Ã÷£ºÈç¹ûniºÅ½áµãÒѾ­ÓÐÍøÂçÕϰ­½áµãÊý¾Ý£¬ÄÇô¸Ãº¯Êý¸üÐÂÔ­À´µÄÍøÂçÕϰ­½áµãÊý¾Ý£¬·ñÔò¾Í½«ÍøÂçÕϰ­½áµãÊý¾ÝÌí¼Óµ½niºÅ½áµã£¬²¢¸Ä±ä½áµãÊý¾ÝÀàÐÍ(λ»òNOD_BARRIER)¡£

5¡¢²éÕÒ¼ìË÷ λÖÃÅжϺ¯Êý

ÅжϵãÊÇ·ñÔÚ¾ØÐοòÄÚ

short _PntInRect(D_DOT *dot,D_RECT *rc); ²ÎÊý£ºÈë¿Ú dot - ÅжϵãλÖÃ

*rc - ¾ØÐη¶Î§

³ö¿Ú ÎÞ

·µ»ØÖµ dotµãÔÚrc¾ØÐοòÄÚ·µ»Ø2£¬ÔÚ¾ØÐοòÉÏ·µ»Ø1£¬ÔÚ¿òÍâ·µ»Ø0¡£

ÅжϵãÊÇ·ñÔÚ¶à±ßÐÎÄÚ

short _IsDotInPolygon(D_DOT *pxy,long dn,D_DOT *dot) ²ÎÊý£ºÈë¿Ú *pxy - ¶à±ßÐÎ×ø±ê´®£¬²»ÒªÇó¶à±ßÐηâ±Õ

dn - pxy°üº¬µÄµãÊý *dot - Åжϵã×ø±ê

³ö¿Ú ÎÞ

·µ»ØÖµ dotµãÔÚ¶à±ßÐÎÄÚ·µ»Ø2£¬ÔÚ±ßÏßÉÏ·µ»Ø1£¬ÔÚ¶à±ßÐÎÍâ·µ»Ø0¡£ VBº¯Êý£ºDeclare Function bIsDotInPolygon(pxy As D_DOT, ByVal dn As Long, ByVal

dot As D_DOT) As Integer

ÅжϵãÊÇ·ñÔÚÇøÓòÄÚ

short _IsDotInReg(short regNum,D_DOT *xy,long *ne,D_DOT *dot,short flg); short _IsDotInReg1(D_DOT *dot,short ai,long ri,short flg); ²ÎÊý£ºÈë¿Ú

*xy - ÇøÓò±ß½ç×ø±êÊý¾Ý´®¡£Çë²ÎÔÄ_GetRegEdgeº¯Êý˵Ã÷¡£ ai - ¹¤×÷ÇøºÅ

ri - ÇøÓòºÅ

*ne - ÇøÓò±ß½çÿһȦµãÊý¡£ *dot - Åжϵã×ø±ê¡£

Flg - ÊÇ·ñÅжÏÄÚȦ±êÖ¾£¬1/0£ºÅжÏ/²»Åжϡ£¼´flg=1ʱ£¬ÒªÑϸñÅжϵã

ÊÇ·ñÂäÔÚÇøÓòÄÚ£¬ÈôÂäÔÚÇøÓòµÄ¿Õ¶´ÄÚ£¬Ò²ÈÏΪÊÇÂäÔÚÇøÓòÍâ

±ß¡£

³ö¿Ú ÎÞ

·µ»ØÖµ dotµãÔÚÇøÓòÄÚ·µ»Ø2£¬ÔÚ±ßÏßÉÏ·µ»Ø1£¬ÔÚÇøÓòÍâ·µ»Ø0¡£

VBº¯Êý£ºDeclare Function bIsDotInReg(ByVal regNum As Integer, xy As D_DOT,

ne As Long, ByVal dot As D_DOT, ByVal flg As Integer) As Integer

ÅжÏÏßÊÇ·ñÓëÇøÓòÏཻ

short _LinInterReg(short lai,long li,short rai,long ri);

short _LinInterReg1(D_DOT *xy,long len,D_DOT *rxy,long *ne,short neLen); ²ÎÊý£ºÈë¿Ú *xy ¨C ÏßÉϵã×ø±êÊý¾Ý´®

*rxy - ÇøÓò±ß½ç×ø±êÊý¾Ý´®¡£Çë²ÎÔÄ_GetRegEdgeº¯Êý˵Ã÷¡£ lai - Ïß¹¤×÷ÇøºÅ rai - Çø¹¤×÷ÇøºÅ ri - ÇøÓòºÅ

*ne - ÇøÓò±ß½çÿһȦµãÊý neLen - neÊý×éµÄÏîÊý

³ö¿Ú ÎÞ

·µ»ØÖµ Ïཻ·µ»Ø1£¬·ñÔò·µ»Ø0

ÅжÏÁ½¸öÇøÊÇ·ñÏཻ

short _RegInterReg(short rai,long ri,short rai1,long ri1);

short _RegInterReg1(D_DOT *rxy0,long *ne0,short ne0Len,D_DOT *rxy1,long *ne1,short ne1Len);

²ÎÊý£ºÈë¿Ú rai - µÚ1¸öÇøËùÔڵŤ×÷ÇøºÅ

ÁªÏµ¿Í·þ£º779662525#qq.com(#Ìæ»»Îª@)