forked from SharpMap/SharpMap
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPostGisSample.cs
More file actions
111 lines (97 loc) · 5.39 KB
/
PostGisSample.cs
File metadata and controls
111 lines (97 loc) · 5.39 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
using System;
using System.Drawing.Drawing2D;
namespace WinFormSamples.Samples
{
public static class PostGisSample
{
public static SharpMap.Map InitializeMap(float angle)
{
//Initialize a new map of size 'imagesize'
SharpMap.Map map = new SharpMap.Map();
//Set up the countries layer
SharpMap.Layers.VectorLayer layCountries = new SharpMap.Layers.VectorLayer("Countries");
//Set the datasource to a shapefile in the App_data folder
layCountries.DataSource = new SharpMap.Data.Providers.PostGIS(Properties.Settings.Default.PostGisConnectionString, "countries", "ogc_fid");
//Set fill-style to green
layCountries.Style.Fill = new System.Drawing.SolidBrush(System.Drawing.Color.Green);
//Set the polygons to have a black outline
layCountries.Style.Outline = System.Drawing.Pens.Black;
layCountries.Style.EnableOutline = true;
//Set up a river layer
SharpMap.Layers.VectorLayer layRivers = new SharpMap.Layers.VectorLayer("Rivers");
//Set the datasource to a shapefile in the App_data folder
layRivers.DataSource = new SharpMap.Data.Providers.PostGIS(Properties.Settings.Default.PostGisConnectionString, "rivers", "ogc_fid");
//Define a blue 1px wide pen
layRivers.Style.Line = new System.Drawing.Pen(System.Drawing.Color.Blue, 1);
//Set up a river layer
SharpMap.Layers.VectorLayer layCities = new SharpMap.Layers.VectorLayer("Cities");
//Set the datasource to a shapefile in the App_data folder
layCities.DataSource = new SharpMap.Data.Providers.PostGIS(Properties.Settings.Default.PostGisConnectionString, "cities", "ogc_fid");
layCities.Style.SymbolScale = 0.8f;
layCities.MaxVisible = 40;
//Set up a country label layer
SharpMap.Layers.LabelLayer layLabel = new SharpMap.Layers.LabelLayer("Country labels")
{
DataSource = layCountries.DataSource,
Enabled = true,
LabelColumn = "Name",
MultipartGeometryBehaviour = SharpMap.Layers.LabelLayer.MultipartGeometryBehaviourEnum.Largest,
LabelFilter = SharpMap.Rendering.LabelCollisionDetection.ThoroughCollisionDetection,
PriorityColumn = "popdens",
Style = new SharpMap.Styles.LabelStyle()
{
ForeColor = System.Drawing.Color.White,
Font = new System.Drawing.Font(System.Drawing.FontFamily.GenericSerif, 12),
BackColor = new System.Drawing.SolidBrush(System.Drawing.Color.FromArgb(128, 255, 0, 0)),
HorizontalAlignment = SharpMap.Styles.LabelStyle.HorizontalAlignmentEnum.Center,
CollisionDetection = true,
MaxVisible = 90,
MinVisible = 30
}
};
//Set up a city label layer
SharpMap.Layers.LabelLayer layCityLabel = new SharpMap.Layers.LabelLayer("City labels")
{
DataSource = layCities.DataSource,
Enabled = true,
LabelColumn = "name",
PriorityColumn = "population",
PriorityDelegate = delegate(SharpMap.Data.FeatureDataRow fdr)
{
Int32 retVal = 10000000 * (Int32)( (String)fdr["capital"] == "Y" ? 1 : 0 );
return retVal + Convert.ToInt32(fdr["population"]);
},
TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias,
SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias,
LabelFilter = SharpMap.Rendering.LabelCollisionDetection.ThoroughCollisionDetection,
Style = new SharpMap.Styles.LabelStyle()
{
ForeColor = System.Drawing.Color.White,
Font = new System.Drawing.Font(System.Drawing.FontFamily.GenericSerif, 11),
MaxVisible = layLabel.MinVisible,
HorizontalAlignment = SharpMap.Styles.LabelStyle.HorizontalAlignmentEnum.Left,
VerticalAlignment = SharpMap.Styles.LabelStyle.VerticalAlignmentEnum.Bottom,
Offset = new System.Drawing.PointF(3, 3),
Halo = new System.Drawing.Pen(System.Drawing.Color.Black, 2),
CollisionDetection = true
}
};
//Add the layers to the map object.
//The order we add them in are the order they are drawn, so we add the rivers last to put them on top
map.Layers.Add(layCountries);
map.Layers.Add(layRivers);
map.Layers.Add(layCities);
map.Layers.Add(layLabel);
map.Layers.Add(layCityLabel);
//limit the zoom to 360 degrees width
map.MaximumZoom = 360;
map.BackColor = System.Drawing.Color.LightBlue;
map.ZoomToExtents(); // = 360;
map.Center = new GeoAPI.Geometries.Coordinate(0, 0);
Matrix mat = new Matrix();
mat.RotateAt(angle, map.WorldToImage(map.Center));
map.MapTransform = mat;
return map;
}
}
}