📄 form1.cs
字号:
}
else if (this.radioButton2.Checked)
{
ESRI.MapObjects2.Core.Line line = this.axMap1.TrackLine();
ESRI.MapObjects2.Core.GeoEvent evtLine = this.axMap1.TrackingLayer.AddEvent(line, 0);
return line;
}
return null;
}*/
private void checkBox1_Click(object sender, System.EventArgs e)
{
if (this.checkBox1.Checked)
this.timer1.Start();
else
this.timer1.Stop();
}
private void timer1_Tick(object sender, System.EventArgs e)
{
System.Random rnd = new System.Random();
double maxDist = this.axMap1.Extent.Height / 2000;
long nEventCount = this.axMap1.TrackingLayer.EventCount;
ESRI.MapObjects2.Core.GeoEvent gEvt;
double dX = maxDist * (rnd.Next(-100,100));
double dY = maxDist * (rnd.Next(-100,100));
//this.LoadLine();
//line.Offset(dX, dY);
for (int i=0; i<nEventCount;i++)
{
dX = maxDist * (rnd.Next(-100, 100));
dY = maxDist * (rnd.Next(-100,100));
gEvt = this.axMap1.TrackingLayer.get_Event(i);
gEvt.Move(dX, dY);
}
}
private void line_Click(object sender, System.EventArgs e)
{
ESRI.MapObjects2.Core.Line line = new ESRI.MapObjects2.Core.LineClass();
ESRI.MapObjects2.Core.Point pt = new ESRI.MapObjects2.Core.PointClass();
ESRI.MapObjects2.Core.Points pts = new ESRI.MapObjects2.Core.PointsClass();
pt.X = this.axMap1.Extent.Left;
pt.Y = (this.axMap1.Extent.Top - this.axMap1.Extent.Height) / 2;
pts.Add(pt);
pt.X = this.axMap1.Extent.Left + this.axMap1.Extent.Width / 4;
pt.Y = (this.axMap1.Extent.Top - this.axMap1.Extent.Height) / 4;
pts.Add(pt);
pt = this.axMap1.Extent.Center;
pts.Add(pt);
pt.X = this.axMap1.Extent.Center.X + this.axMap1.Extent.Width / 4;
pt.Y = this.axMap1.Extent.Top - this.axMap1.Extent.Height / 4;
pts.Add(pt);
line.Parts.Add(pts);
this.axMap1.TrackingLayer.AddEvent(line, 0);
this.axMap1.TrackingLayer.get_Symbol(0).Color = Convert.ToUInt32(ESRI.MapObjects2.Core.ColorConstants.moRed);
//this.axMap1.TrackingLayer.Refresh(true, this.axMap1.TrackingLayer);
this.axMap1.CtlRefresh();
}
private void button2_Click(object sender, System.EventArgs e)
{
if (CreateLineMapLayer())
SaveData();
this.axMap1.Layers.Add(layer);
layer.Symbol.Color = Convert.ToUInt32(ESRI.MapObjects2.Core.ColorConstants.moRed);
this.axMap1.CtlRefresh();
}
private bool CreateLineMapLayer()
{
bool result = false;
try
{
// Exports the layer (along with it's PRJ file) to the currently selected
// coordinate system.
this.dlgSave.Filter = "ESRI Shapefiles (*.shp)|*.shp";
this.dlgSave.Title = "Save projected layer as...";
if (dlgSave.ShowDialog(this) == DialogResult.OK)
{
if (dlgSave.FileName != null)
{
// Export the layer's records to the selected Coordinatesystem.
this.Cursor = System.Windows.Forms.Cursors.WaitCursor;
ESRI.MapObjects2.Core.DataConnection dc ;
dc = new ESRI.MapObjects2.Core.DataConnectionClass();
ESRI.MapObjects2.Core.GeoDataset gds;//= new ESRI.MapObjects2.Core.GeoDatasetClass();
//MessageBox.Show(dlgSave.FileName);
path = dlgSave.FileName.Substring(0, dlgSave.FileName.Length - 7);
//MessageBox.Show(path);
dc.Database = path;
dc.Connect();
if (!dc.Connected)
{
MessageBox.Show("请指定已经有的文件");
}
else
{
ESRI.MapObjects2.Core.TableDesc tabDesc = new ESRI.MapObjects2.Core.TableDescClass();
tabDesc.FieldCount = 2;
//tabDesc.set_FieldLength(0,10);
tabDesc.set_FieldName(0, "X");
tabDesc.set_FieldType(0, ESRI.MapObjects2.Core.FieldTypeConstants.moDouble);
tabDesc.set_FieldPrecision(0, 10);
tabDesc.set_FieldScale(0, 3);
//tabDesc.set_FieldLength(1, 10);
tabDesc.set_FieldName(1, "Y");
tabDesc.set_FieldType(1, ESRI.MapObjects2.Core.FieldTypeConstants.moDouble);
tabDesc.set_FieldPrecision(1, 10);
tabDesc.set_FieldScale(1, 3);
String fileName = "xia";
gds = dc.AddGeoDataset(fileName, ESRI.MapObjects2.Core.ShapeTypeConstants.moShapeTypeLine,
tabDesc, null,null);
layer.GeoDataset = gds;
dc.Disconnect();
result = true;
}
}
}
}
catch (System.Runtime.InteropServices.ExternalException COMEx)
{
MessageBox.Show(COMEx.ErrorCode + ": " + COMEx.Message);
}
catch (System.Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
this.Cursor = System.Windows.Forms.Cursors.Default;
}
return result;
}
private void SaveData()
{
try
{
ESRI.MapObjects2.Core.Field xField ; //xField = new ESRI.MapObjects2.Core.FieldClass();
ESRI.MapObjects2.Core.Field yField;// = new ESRI.MapObjects2.Core.FieldClass();
ESRI.MapObjects2.Core.Field shapeField;// = new ESRI.MapObjects2.Core.FieldClass();
ESRI.MapObjects2.Core.Fields fields;// = new ESRI.MapObjects2.Core.FieldsClass();
ESRI.MapObjects2.Core.Recordset rs = layer.Records;
rs.AutoFlush = false;
fields = rs.Fields;
shapeField = fields.Item("Shape");
xField = fields.Item("X");
yField = fields.Item("Y");
ESRI.MapObjects2.Core.Line line = new ESRI.MapObjects2.Core.LineClass();
ESRI.MapObjects2.Core.Point pt = new ESRI.MapObjects2.Core.PointClass();
ESRI.MapObjects2.Core.Points pts = new ESRI.MapObjects2.Core.PointsClass();
/*pt.X = 1181604.156d;
pt.Y = 2298957.796d;
pts.Add(pt);
//pts = new ESRI.MapObjects2.Core.PointsClass();
//pt.X = this.axMap1.Extent.Left + this.axMap1.Extent.Width / 400;
//pt.Y = (this.axMap1.Extent.Top - this.axMap1.Extent.Height) / 20;
pt.X = 2394976.10558d;
pt.Y = 2574260.6747d;
pts.Add(pt);
pt.X = 2078887.6153d;
pt.Y = 2089931.5363d;
pts.Add(pt);
line.Parts.Add(pts);
rs.AddNew();
shapeField.Value = line;
xField.Value = pt.X;
yField.Value = pt.Y;
rs.Update();*/
pt.X = this.axMap1.Extent.Left;
pt.Y = (this.axMap1.Extent.Top - this.axMap1.Extent.Height) / 2;
pts.Add(pt);
pt = this.axMap1.Extent.Center;
pts.Add(pt);
line.Parts.Add(pts);
rs.AddNew();
shapeField.Value = line;
xField.Value = pt.X;
yField.Value = pt.Y;
rs.Update();
pts = new ESRI.MapObjects2.Core.PointsClass();
pt.X = this.axMap1.Extent.Center.X + this.axMap1.Extent.Width / 4;
pt.Y = this.axMap1.Extent.Top - this.axMap1.Extent.Height / 4;
pts.Add(pt);
pt.X = this.axMap1.Extent.Right ;
pt.Y = this.axMap1.Extent.Height ;
pts.Add(pt);
line.Parts.Add(pts);
rs.AddNew();
shapeField.Value = line;
xField.Value = pt.X;
yField.Value = pt.Y;
rs.Update();
rs.AutoFlush = true;
}
catch (System.Runtime.InteropServices.COMException com)
{
MessageBox.Show("保存数据出错" + com.Message);
return;
}
catch (System.Exception ex)
{
MessageBox.Show(ex.Message );
return;
}
}
private void LoadLine()
{
ESRI.MapObjects2.Core.MapLayer offSetLayer = new ESRI.MapObjects2.Core.MapLayerClass();
//ESRI.MapObjects2.Core.GeoDataset gds = layer.Records.Export(
// this.dlgSave.FileName.Substring(0, this.dlgSave.FileName.Length - 4) + "1.shp", null);
/*ESRI.MapObjects2.Core.DataConnection dc = new ESRI.MapObjects2.Core.DataConnectionClass();
dc.Database = path;
dc.Connect();
if (!dc.Connected)
{
MessageBox.Show("数据库连接不正确");
}
else
{*/
//ESRI.MapObjects2.Core.MapLayer offSetLayer = new ESRI.MapObjects2.Core.MapLayerClass();
//ESRI.MapObjects2.Core.GeoDataset gds = dc.FindGeoDataset("xia");
//if (gds != null)
//{
offSetLayer.GeoDataset = gds;//dc.FindGeoDataset("xia1");
ESRI.MapObjects2.Core.Recordset rs = offSetLayer.Records;
ESRI.MapObjects2.Core.Fields flds = rs.Fields;
ESRI.MapObjects2.Core.Field shapeFld = flds.Item("Shape");
rs.AutoFlush = false;
rs.MoveFirst();
while (!rs.EOF)
{
if (offSetLayer.shapeType == ESRI.MapObjects2.Core.ShapeTypeConstants.moShapeTypeLine)
{
line = (ESRI.MapObjects2.Core.Line)shapeFld.Value;
line.Offset((double)(this.axMap1.Extent.Height / 20), (double)(this.axMap1.Extent.Height / 20));
if (rs.Updatable == true)
{
//MessageBox.Show("Yeah");
rs.Edit();
shapeFld.Value = line;
}
if (rs.EditMode == ESRI.MapObjects2.Core.EditModeConstants.moEditInProgress)
rs.Update();
rs.MoveNext();
}
//}
rs.AutoFlush = true;
/* ESRI.MapObjects2.Core.Field shapeFld = offSetLayer.Records.Fields.Item("Shape");
offSetLayer.Records.AutoFlush = false;
offSetLayer.Records.MoveFirst();
while (!offSetLayer.Records.EOF)
{
line = (ESRI.MapObjects2.Core.Line)shapeFld.Value;
line.Offset(180d, 145d);
if (offSetLayer.Records.Updatable == true)
{
offSetLayer.Records.Edit();
shapeFld.Value = line;
}
if (offSetLayer.Records.EditMode == ESRI.MapObjects2.Core.EditModeConstants.moEditInProgress)
offSetLayer.Records.Update();
offSetLayer.Records.MoveNext();
}
offSetLayer.Records.AutoFlush= true;*/
this.axMap1.Layers.Add(offSetLayer);
offSetLayer.Symbol.Color = Convert.ToUInt32(ESRI.MapObjects2.Core.ColorConstants.moGreen);
this.axMap1.CtlRefresh();
//}
//dc.Disconnect();
}
}
private void checkBox2_Click(object sender, System.EventArgs e)
{
}
private void checkBox2_CheckedChanged(object sender, System.EventArgs e)
{
LoadLine();
}
private void axMap1_MouseMoveEvent(object sender, ESRI.MapObjects2.Core.MouseMoveEventArgs e)
{
ESRI.MapObjects2.Core.Point pt = this.axMap1.ToMapPoint(e.x, e.y);
this.label1.Text = pt.X + " " + pt.Y;
this.label2.Text = e.x + " " + e.y;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -