阅读:2211回复:4
一个MO图形编辑中有趣的现象<P >图形编辑中,给要素添加点后,要素的FeatureId变为同层中的最后一个。</P> <P ><p> </p></P> <P >我写了个MO图形修改编辑的程序,思路步骤如下: </P> <P >1。 先取得选中的要素的记录selRec(依类型赋给面selPoly,线selLine,点selPoint,他们再把所有的点赋给点集pts)。</P> <P > Set Loc = frmMain.mapDisp.ToMapPoint(X, Y)</P> <P > theTol = frmMain.mapDisp.ToMapDistance(SEARCHTOLPIXELS * Screen.TwipsPerPixelX)</P> <P > For Each aLayer In frmMain.mapDisp.Layers</P> <P > If aLayer.Visible And aLayer.LayerType = moMapLayer Then</P> <P > Set selRec = aLayer.SearchByDistance(Loc, theTol, "") </P> <P > If selRec.Count >= 1 Then</P> <P > selected = True</P> <P > selRec.MoveFirst</P> <P > Exit For</P> <P > Else</P> <P > Set selRec = Nothing</P> <P > selected = False</P> <P > End If</P> <P > End If</P> <P > Next aLayer</P> <P >2。对图形进行修改的过程为: 先修改(增加,删除,移动)点集pts中的点,然后依类型赋给面selPoly,线selLine,点selPoint赋值,以给多边形添加一点为例:</P> <P > shortDist = 999999999</P> <P > Set pt = mapDisp.ToMapPoint(X, Y)</P> <P > For i = 0 To pts.Count - 2</P> <P > thisDist = pt.DistanceToSegment(pts(i), pts(i + 1))</P> <P > If thisDist < shortDist Then</P> <P > shortDist = thisDist</P> <P > shortDistPtIndex = i + 1</P> <P > End If</P> <P > Next i</P> <P > thisDist = pt.DistanceToSegment(pts(pts.Count - 1), pts(0))</P> <P > If thisDist < shortDist Then</P> <P > pts.Add pt</P> <P > Else</P> <P > pts.Insert shortDistPtIndex, pt</P> <P > End If</P> <P > Set selPoly = Nothing</P> <P > selPoly.Parts.Add pts)</P> <P >3.对选中的要素记录selRec进行修改:</P> <P > selRec.Edit</P> <P > selRec("shape").value = selPoly</P> <P > selRec.Update</P> <P > selRec.StopEditing</P> <P ><p> </p></P> <P >照理修改后的要素的FeatureId和修改前的应该一样,但是实际上修改后要素的FeatureId变为了最后一个(也就是同层中它的FeatureId最大,它以前后边的要素的FeatureId依次向前移了一位)。 然而更奇怪的是,删除,移动选中的要素的点,或移动选中的整个要素,这些操作思路步骤虽然和上面一样,但是它的FeatureId就是没有改变!也就是要素多出点时,就它的FeatureId变了!</P> <P >我又实验了一下(先给pts加点,然后删点),最后发现只要修改后pts的点数大于原来未做修改时pts的点数时,执行步骤3 代码后,修改后要素的FeatureId就会变为最大!不知道大侠们能否解释一下为什么会出现这样的现象呢?</P> |
|
1楼#
发布于:2004-07-11 20:53
<P>老大,<B><FONT color=blue>图强商城的光碟怎么样,我想买第一期的mo开发光碟,不知道内容好不好,</FONT></B></P><P><FONT color=#0000ff><b>请老大指点.</b></FONT></P><P><FONT color=#0000ff><b>内容谈到一个GIS系统,是不是讲是一个完全开放代码的GIS系统.</b></FONT></P><P><b><FONT color=#0000ff>请老大指点</FONT></b></P>
|
|
2楼#
发布于:2004-06-01 10:14
我也学习一下
|
|
3楼#
发布于:2004-05-18 08:38
那我上面的代码,思路有错误吗,恳请指教!
|
|
4楼#
发布于:2004-05-17 23:22
<P>倒,没注意这个问题,不过应该不会啊,如果这样的话,根据FeatureId来查询的话,那问题不就有了</P>
|
|
|