组件式GIS实验报告Word文档格式.docx
《组件式GIS实验报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《组件式GIS实验报告Word文档格式.docx(10页珍藏版)》请在冰豆网上搜索。
2.实验02地图浏览功能设计
3.实验03量算设计
4.实验04基本查询设计
5.实验05空间查询设计
三、实验结果
结果:
在VS2010C#开发环境下建立的第一个项目,在设计窗体上添加SuperMapObjects核心控件后,整个设计环境的截图。
截图:
设计的地图浏览功能及其代码:
privatevoidForm1_Load(objectsender,EventArgse)
{
axSuperMap1.Connect(axSuperWorkspace1.CtlHandle);
StringstrSpaceFileName;
strSpaceFileName=@"
E:
\Myproject\world.smw"
;
axSuperWorkspace1.Open(strSpaceFileName,"
"
);
axSuperMap1.OpenMap("
世界地图"
}
privatevoidbuttton1_Click(objectsender,EventArgse)
this.axSuperMap1.Action=SuperMapLib.seAction.scaPan;
}
privatevoidbutton1_Click(objectsender,EventArgse)
axSuperMap1.Action=SuperMapLib.seAction.scaZoomOut;
privatevoidbutton2_Click(objectsender,EventArgse)
axSuperMap1.Action=SuperMapLib.seAction.scaZoomIn;
privatevoidbutton3_Click(objectsender,EventArgse)
axSuperMap1.Action=SuperMapLib.seAction.scaZoomFree;
privatevoidbutton4_Click(objectsender,EventArgse)
this.axSuperMap1.ViewEntire();
系统运行截图:
坐标、距离、面积、方位角等量算功能代码:
stringtemp;
privatevoidtoolStripButton1_Click(objectsender,EventArgse)
temp="
A"
this.axSuperMap1.Action=seAction.scaTrackPoint;
privatevoidtoolStripButton2_Click(objectsender,EventArgse)
B"
axSuperMap1.TrackingLayer.ClearEvents();
axSuperMap1.TrackingLayer.Refresh();
axSuperMap1.Action=SuperMapLib.seAction.scaTrackPolyline;
privatevoidtoolStripButton3_Click(objectsender,EventArgse)
C"
axSuperMap1.Action=SuperMapLib.seAction.scaTrackPolygon;
privatevoidtoolStripButton4_Click(objectsender,EventArgse)
D"
privatevoidaxSuperMap1_Tracking(objectsender,AxSuperMapLib._DSuperMapEvents_TrackingEvente)
stringstrCoordinateUnit;
strCoordinateUnit=this.axSuperWorkspace1.Datasources[1].PJCoordSys.CoordUnits.ToString();
switch(temp)
case"
:
this.toolStripStatusLabel1.Text="
x:
+Math.Round(e.x,4).ToString()+strCoordinateUnit+"
"
+"
y:
+Math.Round(e.y,4).ToString()+strCoordinateUnit;
break;
this.toolStripStatusLabel2.Text="
当前长度:
+e.dCurrentLength.ToString()+"
总长度:
+e.dTotalLength.ToString();
this.toolStripStatusLabel3.Text="
总面积:
+e.dTotalArea.ToString();
this.toolStripStatusLabel4.Text="
方位角:
+e.dCurrentAngle.ToString();
}
面积量算截图:
实验04基本查询设计
图查属性代码:
privatevoidbutton5_Click(objectsender,EventArgse)
this.axSuperMap1.Action=seAction.scaSelect;
privatevoidaxSuperMap1_GeometrySelected(objectsender,AxSuperMapLib._DSuperMapEvents_GeometrySelectedEvente)
soSelectionobjSel;
soRecordsetobjRecordset;
StringstrValue;
objSel=axSuperMap1.selection;
if(objSel.Count!
=0)
objRecordset=objSel.ToRecordset(false);
objRecordset.MoveFirst();
strValue=objRecordset.GetFieldValue("
Capital"
).ToString();
MessageBox.Show(strValue,"
属性查图代码:
privatevoidbutton6_Click(objectsender,EventArgse)
stringstrQueryTxt;
soDatasetobjDt;
soDatasetVectorobjDtv;
soRecordsetobjRd;
DoubledRatio;
dRatio=2;
objDt=this.axSuperWorkspace1.Datasources["
World"
].Datasets["
Countries"
];
objDtv=(SuperMapLib.soDatasetVector)objDt;
strQueryTxt="
Countrylike'
*"
+this.textBox1.Text+"
*'
objRd=objDtv.Query(strQueryTxt,true,null,"
this.axSuperMap1.selection.FromRecordset(objRd);
this.axSuperMap1.EnsureVisibleRecordset(objRd,dRatio);
this.axSuperMap1.Refresh();
图查属性截图:
属性查图截图:
4.实验05空间查询设计
空间查询算子
基本查询模式:
scsExtentOverlap、scsLinCross、scsContaining、scsContainedBy、scsOverlap、scsDisjoint、scsTouch、scsIdentical、scsAreaIntersect
常用查询模式:
scsCentroidInPolygon、scsCommonPoint、scsCommonLine
组合查询模式:
scsContainedByNoEdgeTouch、scsContainingNoEdgeTouch、scsContainOrOverlap、scsPointInPolygon、scsTouchNoCross、scsCommonLineOrOverlap、scsCommonPointOrLineCross、scsEdgeTouchOrAreaIntersect、scsAreaIntersectNoEdgeTouch
空间查询功能代码:
privatevoidbutton7_Click(objectsender,EventArgse)
axSuperMap1.selection.RemoveAll();
this.axSuperMap1.Action=seAction.scaTrackPolyline;
privatevoidaxSuperMap1_Tracked(objectsender,EventArgse)
soGeometryobjSearchGeo=axSuperMap1.TrackedGeometry;
if(objSearchGeo==null)
MessageBox.Show("
未获得用于搜索的对象"
"
提示"
return;
soStyleobjStyle=newsoStyleClass();
objStyle.PenColor=(uint)