-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathLineTool.cs
More file actions
120 lines (106 loc) · 3.08 KB
/
LineTool.cs
File metadata and controls
120 lines (106 loc) · 3.08 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ArcGIS.Core.CIM;
using ArcGIS.Core.Data;
using ArcGIS.Core.Geometry;
using ArcGIS.Desktop.Catalog;
using ArcGIS.Desktop.Core;
using ArcGIS.Desktop.Editing;
using ArcGIS.Desktop.Extensions;
using ArcGIS.Desktop.Framework;
using ArcGIS.Desktop.Framework.Contracts;
using ArcGIS.Desktop.Framework.Dialogs;
using ArcGIS.Desktop.Framework.Threading.Tasks;
using ArcGIS.Desktop.Mapping;
using Npgsql;
namespace LoginTest02
{
internal class LineTool : MapTool
{
private FeatureLayer featureLayer = null;
public LineTool()
{
IsSketchTool = true;
SketchType = SketchGeometryType.Line;
SketchOutputMode = SketchOutputMode.Map;
DataHelper.UserLoginHandler += onUserLogin;
}
void onUserLogin()
{
QueuedTask.Run(() =>
{
if (featureLayer != null)
{
MapView.Active.Map.RemoveLayer(featureLayer);
addFeatureLayer();
}
});
}
protected override Task OnToolDeactivateAsync(bool hasMapViewChanged)
{
return QueuedTask.Run(() =>
{
if (featureLayer != null)
{
MapView.Active.Map.RemoveLayer(featureLayer);
}
});
}
protected override Task OnToolActivateAsync(bool active)
{
return addFeatureLayer();
}
protected override /*async*/ Task<bool> OnSketchCompleteAsync(Geometry geometry)
{
Debug.WriteLine("OnSketchCompleteAsync, enter");
// Create an edit operation
var createOperation = new EditOperation();
createOperation.Name = string.Format("Create {0}", "lines");
createOperation.SelectNewFeatures = true;
// Queue feature creation
//createOperation.Create(featureLayer, geometry);
var attributes = new Dictionary<string, object>();
attributes.Add("geom", geometry);
attributes.Add("user_id", DataHelper.userID);
createOperation.Create(featureLayer, attributes);
// Execute the operation
return createOperation.ExecuteAsync();
}
private Task addFeatureLayer()
{
Debug.WriteLine("addFeatureLayer enter");
return ArcGIS.Desktop.Framework.Threading.Tasks.QueuedTask.Run(() =>
{
ArcGIS.Core.Data.DatabaseConnectionProperties connectionProperties = new DatabaseConnectionProperties(EnterpriseDatabaseType.PostgreSQL)
{
AuthenticationMode = AuthenticationMode.DBMS,
Instance = @"127.0.0.1",
Database = "geomapmaker2",
User = "douglas",
Password = "password",
//Version = "dbo.DEFAULT"
};
using (Geodatabase geodatabase = new Geodatabase(connectionProperties))
{
using (FeatureClass featureClass = geodatabase.OpenDataset<FeatureClass>("geomapmaker2.geomapmaker2.line_features"))
{
var layerParamsQueryDefn = new FeatureLayerCreationParams(featureClass)
{
IsVisible = true,
DefinitionFilter = new CIMDefinitionFilter()
{
Name = "User",
DefinitionExpression = "user_id = " + DataHelper.userID
}
};
featureLayer = LayerFactory.Instance.CreateLayer<FeatureLayer>(layerParamsQueryDefn, MapView.Active.Map);
}
}
});
}
}
}