Skip to content

Commit 35a910b

Browse files
committed
Added GeoJSON support
1 parent 32501ef commit 35a910b

File tree

10 files changed

+2016
-3
lines changed

10 files changed

+2016
-3
lines changed

Npgsql.all.sln

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Npgsql.RawPostgis", "src\Np
3838
EndProject
3939
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Npgsql.NetTopologySuite", "src\Npgsql.NetTopologySuite\Npgsql.NetTopologySuite.csproj", "{20D889AA-82DC-4AA0-B508-7CE68B83BB27}"
4040
EndProject
41+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Npgsql.GeoJSON", "src\Npgsql.GeoJSON\Npgsql.GeoJSON.csproj", "{04052CCF-CABC-4B37-B89D-F95721D95407}"
42+
EndProject
4143
Global
4244
GlobalSection(SolutionConfigurationPlatforms) = preSolution
4345
Debug|Any CPU = Debug|Any CPU
@@ -134,6 +136,14 @@ Global
134136
{20D889AA-82DC-4AA0-B508-7CE68B83BB27}.Release|Any CPU.Build.0 = Release|Any CPU
135137
{20D889AA-82DC-4AA0-B508-7CE68B83BB27}.Release|x86.ActiveCfg = Release|Any CPU
136138
{20D889AA-82DC-4AA0-B508-7CE68B83BB27}.Release|x86.Build.0 = Release|Any CPU
139+
{04052CCF-CABC-4B37-B89D-F95721D95407}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
140+
{04052CCF-CABC-4B37-B89D-F95721D95407}.Debug|Any CPU.Build.0 = Debug|Any CPU
141+
{04052CCF-CABC-4B37-B89D-F95721D95407}.Debug|x86.ActiveCfg = Debug|Any CPU
142+
{04052CCF-CABC-4B37-B89D-F95721D95407}.Debug|x86.Build.0 = Debug|Any CPU
143+
{04052CCF-CABC-4B37-B89D-F95721D95407}.Release|Any CPU.ActiveCfg = Release|Any CPU
144+
{04052CCF-CABC-4B37-B89D-F95721D95407}.Release|Any CPU.Build.0 = Release|Any CPU
145+
{04052CCF-CABC-4B37-B89D-F95721D95407}.Release|x86.ActiveCfg = Release|Any CPU
146+
{04052CCF-CABC-4B37-B89D-F95721D95407}.Release|x86.Build.0 = Release|Any CPU
137147
EndGlobalSection
138148
GlobalSection(SolutionProperties) = preSolution
139149
HideSolutionNode = FALSE
@@ -150,6 +160,7 @@ Global
150160
{EC0DCB3C-9401-47BB-A5E8-B8C7A47DF96A} = {8537E50E-CF7F-49CB-B4EF-3E2A1B11F050}
151161
{B7E92398-DD4E-410E-923C-E256992F6687} = {8537E50E-CF7F-49CB-B4EF-3E2A1B11F050}
152162
{20D889AA-82DC-4AA0-B508-7CE68B83BB27} = {8537E50E-CF7F-49CB-B4EF-3E2A1B11F050}
163+
{04052CCF-CABC-4B37-B89D-F95721D95407} = {8537E50E-CF7F-49CB-B4EF-3E2A1B11F050}
153164
EndGlobalSection
154165
GlobalSection(ExtensibilityGlobals) = postSolution
155166
SolutionGuid = {C90AEECD-DB4C-4BE6-B506-16A449852FB8}

Npgsql.sln

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11

22
Microsoft Visual Studio Solution File, Format Version 12.00
33
# Visual Studio 15
4-
VisualStudioVersion = 15.0.27130.2026
4+
VisualStudioVersion = 15.0.27130.2036
55
MinimumVisualStudioVersion = 10.0.40219.1
66
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{4A5A60DD-41B6-40BF-B677-227A921ECCC8}"
77
ProjectSection(SolutionItems) = preProject
@@ -31,6 +31,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Npgsql.RawPostgis", "src\Np
3131
EndProject
3232
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Npgsql.NetTopologySuite", "src\Npgsql.NetTopologySuite\Npgsql.NetTopologySuite.csproj", "{6CB12050-DC9B-4155-BADD-BFDD54CDD70F}"
3333
EndProject
34+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Npgsql.GeoJSON", "src\Npgsql.GeoJSON\Npgsql.GeoJSON.csproj", "{F7C53EBD-0075-474F-A083-419257D04080}"
35+
EndProject
3436
Global
3537
GlobalSection(SolutionConfigurationPlatforms) = preSolution
3638
Debug|Any CPU = Debug|Any CPU
@@ -111,6 +113,14 @@ Global
111113
{6CB12050-DC9B-4155-BADD-BFDD54CDD70F}.Release|Any CPU.Build.0 = Release|Any CPU
112114
{6CB12050-DC9B-4155-BADD-BFDD54CDD70F}.Release|x86.ActiveCfg = Release|Any CPU
113115
{6CB12050-DC9B-4155-BADD-BFDD54CDD70F}.Release|x86.Build.0 = Release|Any CPU
116+
{F7C53EBD-0075-474F-A083-419257D04080}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
117+
{F7C53EBD-0075-474F-A083-419257D04080}.Debug|Any CPU.Build.0 = Debug|Any CPU
118+
{F7C53EBD-0075-474F-A083-419257D04080}.Debug|x86.ActiveCfg = Debug|Any CPU
119+
{F7C53EBD-0075-474F-A083-419257D04080}.Debug|x86.Build.0 = Debug|Any CPU
120+
{F7C53EBD-0075-474F-A083-419257D04080}.Release|Any CPU.ActiveCfg = Release|Any CPU
121+
{F7C53EBD-0075-474F-A083-419257D04080}.Release|Any CPU.Build.0 = Release|Any CPU
122+
{F7C53EBD-0075-474F-A083-419257D04080}.Release|x86.ActiveCfg = Release|Any CPU
123+
{F7C53EBD-0075-474F-A083-419257D04080}.Release|x86.Build.0 = Release|Any CPU
114124
EndGlobalSection
115125
GlobalSection(SolutionProperties) = preSolution
116126
HideSolutionNode = FALSE
@@ -125,6 +135,7 @@ Global
125135
{D96CC113-7D64-4B31-9DCC-13FDE92C1ECE} = {8537E50E-CF7F-49CB-B4EF-3E2A1B11F050}
126136
{5BF3516D-5559-46A8-8362-0F4D931EEAB9} = {8537E50E-CF7F-49CB-B4EF-3E2A1B11F050}
127137
{6CB12050-DC9B-4155-BADD-BFDD54CDD70F} = {8537E50E-CF7F-49CB-B4EF-3E2A1B11F050}
138+
{F7C53EBD-0075-474F-A083-419257D04080} = {8537E50E-CF7F-49CB-B4EF-3E2A1B11F050}
128139
EndGlobalSection
129140
GlobalSection(ExtensibilityGlobals) = postSolution
130141
SolutionGuid = {C90AEECD-DB4C-4BE6-B506-16A449852FB8}
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
using GeoJSON.Net.Geometry;
2+
3+
namespace Npgsql.GeoJSON
4+
{
5+
sealed class BoundingBoxBuilder
6+
{
7+
bool _hasAltitude;
8+
double _minLongitude, _maxLongitude;
9+
double _minLatitude, _maxLatitude;
10+
double _minAltitude, _maxAltitude;
11+
12+
internal BoundingBoxBuilder()
13+
{
14+
_hasAltitude = false;
15+
16+
_minLongitude = double.PositiveInfinity;
17+
_minLatitude = double.PositiveInfinity;
18+
_minAltitude = double.PositiveInfinity;
19+
20+
_maxLongitude = double.NegativeInfinity;
21+
_maxLatitude = double.NegativeInfinity;
22+
_maxAltitude = double.NegativeInfinity;
23+
}
24+
25+
internal void Accumulate(Position position)
26+
{
27+
if (_minLongitude > position.Longitude)
28+
_minLongitude = position.Longitude;
29+
if (_maxLongitude < position.Longitude)
30+
_maxLongitude = position.Longitude;
31+
32+
if (_minLatitude > position.Latitude)
33+
_minLatitude = position.Latitude;
34+
if (_maxLatitude < position.Latitude)
35+
_maxLatitude = position.Latitude;
36+
37+
if (position.Altitude.HasValue)
38+
{
39+
var altitude = position.Altitude.Value;
40+
if (_minAltitude > altitude)
41+
_minAltitude = altitude;
42+
if (_maxAltitude < altitude)
43+
_maxAltitude = altitude;
44+
45+
_hasAltitude = true;
46+
}
47+
}
48+
49+
internal double[] Build()
50+
=> _hasAltitude
51+
? new[] { _minLongitude, _minLatitude, _minAltitude, _maxLongitude, _maxLatitude, _maxAltitude }
52+
: new[] { _minLongitude, _minLatitude, _maxLongitude, _maxLatitude };
53+
}
54+
}

0 commit comments

Comments
 (0)