|
|
空间查询模式中,有些模式对空间位置的精度要求比较高,因此,有必要开启矢量数据集的捕捉状态。这个范例的设计思想是通过在SuperMap的TrackingLayer上绘制一个点或线或面对象,在SuperMap_Tracked()事件中获取刚才绘制的集合对象,然后再利用这个几何对象按照指定的空间查询模式在指定的数据集上进行空间查询,如果查询结果不为空,则把查询结果追加到选择记录集中,让它亮显,再把用来进行空间查询的集合对象作为一个示例添加到SuperMap的TrackingLayer上。 |
|
|
公共变量: |
|
|
Dim objGeometry As soGeometry
Dim objDt As soDatasetVector |
|
|
Set objDt = SuperMap1.Layer(2).Dataset |
|
|
Dim objRcd As soRecordset
Dim objStyle As New soStyle
With objStyle
.PenColor = vbBlue
.SymbolSize = 80
End With |
|
|
|
|
|
|
|
|
绘点:SuperMap1.Action = scaTrackPoint |
|
|
绘线:SuperMap1.Action = scaTrackPolyline |
|
|
绘面:SuperMap1.Action = scaTrackPolygon |
|
|
|
|
|
|
|
|
Set objGeometry = SuperMap1.TrackedGeometry |
|
|
|
|
|
|
|
|
如果搜索对象是多边形,返回全部或部分被搜索对象包含的对象;如果,搜索对象不是多边形,就返回全部或部分包含搜索对象的对象。 |
|
|
Set objRcd = objDt.QueryEx(objGeometry,scsAreaIntersect,"") |
|
|
 |
|
|
|
|
|
如果搜索对象是多边形,返回全部或部分被搜索对象包含的对象;如果,搜索对象不是多边形,就返回全部或部分包含搜索对象的对象。 |
|
|
Set objRcd = objDt.QueryEx(objGeometry,scsAreaIntersect,"") |
|
|
 |
|
|
|
|
|
与scsAreaIntersect相同,但是相邻/有边线相接触的对象不符合条件。 |
|
|
Set objRcd = objDt.QueryEx(objGeometry,scsAreaIntersectNoEdgeTouch,"") |
|
|
 |
|
|
|
|
|
返回与搜索对象有公共点或者与搜索对象中的的边线有相交的所有对象。 |
|
|
Set objRcd = objDt.QueryEx(objGeometry,scsCommonPointorLineCross,"") |
|
|
 |
|
|
|
|
|
返回与搜索对象有公共点的所有对象。 |
|
|
Set objRcd = objDt.QueryEx(objGeometry,scsCommonPoint,"") |
|
|
 |