Skip to content

Commit

Permalink
Simplify initialization of projections in NationalGridsSweden. This i…
Browse files Browse the repository at this point in the history
…s also sample how to fix #729 for all known projections.
  • Loading branch information
mogikanin committed Oct 3, 2016
1 parent ce81dc8 commit 7daa9a9
Show file tree
Hide file tree
Showing 3 changed files with 49 additions and 125 deletions.
4 changes: 4 additions & 0 deletions Source/DotSpatial.Projections/DotSpatial.Projections.csproj
Expand Up @@ -194,6 +194,7 @@
<Compile Include="ProjectedSystems.cs" />
<Compile Include="ProjectionException.cs" />
<Compile Include="ProjectionInfo.cs" />
<Compile Include="ProjectionInfoExtensions.cs" />
<Compile Include="ProjectionInvalidEsriFormatException.cs" />
<Compile Include="ProjectionMessages.Designer.cs">
<DependentUpon>ProjectionMessages.resx</DependentUpon>
Expand Down Expand Up @@ -348,6 +349,9 @@
<ItemGroup>
<None Include="DeflateStreamUtility\DeflateStreamUtility.exe" />
</ItemGroup>
<ItemGroup>
<None Include="AuthorityCodes\AuthorityCodeToProj4.txt" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<PropertyGroup>
<PreBuildEvent>
Expand Down
150 changes: 25 additions & 125 deletions Source/DotSpatial.Projections/ProjectedCategories/NationalGridsSweden.cs
Expand Up @@ -66,131 +66,31 @@ public class NationalGridsSweden : CoordinateSystemCategory
/// </summary>
public NationalGridsSweden()
{
// EPSG:3028
RT380gon = ProjectionInfo.FromProj4String("+proj=tmerc +lat_0=0 +lon_0=18.05827777777778 +k=1.000000 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs ", "EPSG", 3028);
// EPSG:3029
RT3825gonO = ProjectionInfo.FromProj4String("+proj=tmerc +lat_0=0 +lon_0=20.30827777777778 +k=1.000000 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs ", "EPSG", 3029);
// EPSG:3027
RT3825gonV = ProjectionInfo.FromProj4String("+proj=tmerc +lat_0=0 +lon_0=15.80827777777778 +k=1.000000 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs ", "EPSG", 3027);
// EPSG:3030
RT385gonO = ProjectionInfo.FromProj4String("+proj=tmerc +lat_0=0 +lon_0=22.55827777777778 +k=1.000000 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs ", "EPSG", 3030);
// EPSG:3026
RT385gonV = ProjectionInfo.FromProj4String("+proj=tmerc +lat_0=0 +lon_0=13.55827777777778 +k=1.000000 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs ", "EPSG", 3026);
// EPSG:3025
RT3875gonV = ProjectionInfo.FromProj4String("+proj=tmerc +lat_0=0 +lon_0=11.30827777777778 +k=1.000000 +x_0=1500000 +y_0=0 +ellps=bessel +units=m +no_defs ", "EPSG", 3025);
// EPSG:3022
RT900gon = ProjectionInfo.FromProj4String("+proj=tmerc +lat_0=0 +lon_0=18.05827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +towgs84=419.384,99.3335,591.345,0.850389,1.81728,-7.86224,-0.99496 +units=m +no_defs ", "EPSG", 3022);
// EPSG:3023
RT9025gonO = ProjectionInfo.FromProj4String("+proj=tmerc +lat_0=0 +lon_0=20.30827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +towgs84=419.384,99.3335,591.345,0.850389,1.81728,-7.86224,-0.99496 +units=m +no_defs ", "EPSG", 3023);
// EPSG:3021
RT9025gonV = ProjectionInfo.FromProj4String("+proj=tmerc +lat_0=0 +lon_0=15.80827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +towgs84=419.384,99.3335,591.345,0.850389,1.81728,-7.86224,-0.99496 +units=m +no_defs ", "EPSG", 3021);
// EPSG:3024
RT905gonO = ProjectionInfo.FromProj4String("+proj=tmerc +lat_0=0 +lon_0=22.55827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +towgs84=419.384,99.3335,591.345,0.850389,1.81728,-7.86224,-0.99496 +units=m +no_defs ", "EPSG", 3024);
// EPSG:3020
RT905gonV = ProjectionInfo.FromProj4String("+proj=tmerc +lat_0=0 +lon_0=13.55827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +towgs84=419.384,99.3335,591.345,0.850389,1.81728,-7.86224,-0.99496 +units=m +no_defs ", "EPSG", 3020);
// EPSG:3019
RT9075gonV = ProjectionInfo.FromProj4String("+proj=tmerc +lat_0=0 +lon_0=11.30827777777778 +k=1 +x_0=1500000 +y_0=0 +ellps=bessel +towgs84=419.384,99.3335,591.345,0.850389,1.81728,-7.86224,-0.99496 +units=m +no_defs ", "EPSG", 3019);
// EPSG:3007
SWEREF991200 = ProjectionInfo.FromProj4String("+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ", "EPSG", 3007);
// EPSG:3008
SWEREF991330 = ProjectionInfo.FromProj4String("+proj=tmerc +lat_0=0 +lon_0=13.5 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ", "EPSG", 3008);
// EPSG:3012
SWEREF991415 = ProjectionInfo.FromProj4String("+proj=tmerc +lat_0=0 +lon_0=14.25 +k=1.000000 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ", "EPSG");
// EPSG:3009
SWEREF991500 = ProjectionInfo.FromProj4String("+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ", "EPSG", 3009);
// EPSG:3013
SWEREF991545 = ProjectionInfo.FromProj4String("+proj=tmerc +lat_0=0 +lon_0=15.75 +k=1.000000 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ", "EPSG", 3013);
// EPSG:3010
SWEREF991630 = ProjectionInfo.FromProj4String("+proj=tmerc +lat_0=0 +lon_0=16.5 +k=1 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ", "EPSG", 3010);
// EPSG:3014
SWEREF991715 = ProjectionInfo.FromProj4String("+proj=tmerc +lat_0=0 +lon_0=17.25 +k=1.000000 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ", "EPSG", 3014);
// EPSG:3011
SWEREF991800 = ProjectionInfo.FromProj4String("+proj=tmerc +lat_0=0 +lon_0=18 +k=1.000000 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ", "EPSG", 3011);
// EPSG:3015
SWEREF991845 = ProjectionInfo.FromProj4String("+proj=tmerc +lat_0=0 +lon_0=18.75 +k=1.000000 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ", "EPSG", 3015);
// EPSG:3016
SWEREF992015 = ProjectionInfo.FromProj4String("+proj=tmerc +lat_0=0 +lon_0=20.25 +k=1.000000 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ", "EPSG", 3016);
// EPSG:3017
SWEREF992145 = ProjectionInfo.FromProj4String("+proj=tmerc +lat_0=0 +lon_0=21.75 +k=1.000000 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ", "EPSG", 3017);
// EPSG:3018
SWEREF992315 = ProjectionInfo.FromProj4String("+proj=tmerc +lat_0=0 +lon_0=23.25 +k=1.000000 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ", "EPSG", 3018);
// EPSG:3006
SWEREF99TM = ProjectionInfo.FromProj4String("+proj=utm +zone=33 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs ", "EPSG", 3006);
RT380gon.Name = "RT38_0_gon";
RT3825gonO.Name = "RT38_25_gon_O";
RT3825gonV.Name = "RT38_25_gon_V";
RT385gonO.Name = "RT38_5_gon_O";
RT385gonV.Name = "RT38_5_gon_V";
RT3875gonV.Name = "RT38_75_gon_V";
RT900gon.Name = "RT90_0_gon";
RT9025gonO.Name = "RT90_25_gon_O";
RT9025gonV.Name = "RT90_25_gon_V";
RT905gonO.Name = "RT90_5_gon_O";
RT905gonV.Name = "RT90_5_gon_V";
RT9075gonV.Name = "RT90_75_gon_V";
SWEREF991200.Name = "SWEREF99_12_00";
SWEREF991330.Name = "SWEREF99_13_30";
SWEREF991415.Name = "SWEREF99_14_15";
SWEREF991500.Name = "SWEREF99_15_00";
SWEREF991545.Name = "SWEREF99_15_45";
SWEREF991630.Name = "SWEREF99_16_30";
SWEREF991715.Name = "SWEREF99_17_15";
SWEREF991800.Name = "SWEREF99_18_00";
SWEREF991845.Name = "SWEREF99_18_45";
SWEREF992015.Name = "SWEREF99_20_15";
SWEREF992145.Name = "SWEREF99_21_45";
SWEREF992315.Name = "SWEREF99_23_15";
SWEREF99TM.Name = "SWEREF99_TM";
RT380gon.GeographicInfo.Name = "GCS_RT38";
RT3825gonO.GeographicInfo.Name = "GCS_RT38";
RT3825gonV.GeographicInfo.Name = "GCS_RT38";
RT385gonO.GeographicInfo.Name = "GCS_RT38";
RT385gonV.GeographicInfo.Name = "GCS_RT38";
RT3875gonV.GeographicInfo.Name = "GCS_RT38";
RT900gon.GeographicInfo.Name = "GCS_RT_1990";
RT9025gonO.GeographicInfo.Name = "GCS_RT_1990";
RT9025gonV.GeographicInfo.Name = "GCS_RT_1990";
RT905gonO.GeographicInfo.Name = "GCS_RT_1990";
RT905gonV.GeographicInfo.Name = "GCS_RT_1990";
RT9075gonV.GeographicInfo.Name = "GCS_RT_1990";
SWEREF991200.GeographicInfo.Name = "GCS_SWEREF99";
SWEREF991330.GeographicInfo.Name = "GCS_SWEREF99";
SWEREF991415.GeographicInfo.Name = "GCS_SWEREF99";
SWEREF991500.GeographicInfo.Name = "GCS_SWEREF99";
SWEREF991545.GeographicInfo.Name = "GCS_SWEREF99";
SWEREF991630.GeographicInfo.Name = "GCS_SWEREF99";
SWEREF991715.GeographicInfo.Name = "GCS_SWEREF99";
SWEREF991800.GeographicInfo.Name = "GCS_SWEREF99";
SWEREF991845.GeographicInfo.Name = "GCS_SWEREF99";
SWEREF992015.GeographicInfo.Name = "GCS_SWEREF99";
SWEREF992145.GeographicInfo.Name = "GCS_SWEREF99";
SWEREF992315.GeographicInfo.Name = "GCS_SWEREF99";
SWEREF99TM.GeographicInfo.Name = "GCS_SWEREF99";
RT380gon.GeographicInfo.Datum.Name = "D_Stockholm_1938";
RT3825gonO.GeographicInfo.Datum.Name = "D_Stockholm_1938";
RT3825gonV.GeographicInfo.Datum.Name = "D_Stockholm_1938";
RT385gonO.GeographicInfo.Datum.Name = "D_Stockholm_1938";
RT385gonV.GeographicInfo.Datum.Name = "D_Stockholm_1938";
RT3875gonV.GeographicInfo.Datum.Name = "D_Stockholm_1938";
RT900gon.GeographicInfo.Datum.Name = "D_RT_1990";
RT9025gonO.GeographicInfo.Datum.Name = "D_RT_1990";
RT9025gonV.GeographicInfo.Datum.Name = "D_RT_1990";
RT905gonO.GeographicInfo.Datum.Name = "D_RT_1990";
RT905gonV.GeographicInfo.Datum.Name = "D_RT_1990";
RT9075gonV.GeographicInfo.Datum.Name = "D_RT_1990";
SWEREF991200.GeographicInfo.Datum.Name = "D_SWEREF99";
SWEREF991330.GeographicInfo.Datum.Name = "D_SWEREF99";
SWEREF991415.GeographicInfo.Datum.Name = "D_SWEREF99";
SWEREF991500.GeographicInfo.Datum.Name = "D_SWEREF99";
SWEREF991545.GeographicInfo.Datum.Name = "D_SWEREF99";
SWEREF991630.GeographicInfo.Datum.Name = "D_SWEREF99";
SWEREF991715.GeographicInfo.Datum.Name = "D_SWEREF99";
SWEREF991800.GeographicInfo.Datum.Name = "D_SWEREF99";
SWEREF991845.GeographicInfo.Datum.Name = "D_SWEREF99";
SWEREF992015.GeographicInfo.Datum.Name = "D_SWEREF99";
SWEREF992145.GeographicInfo.Datum.Name = "D_SWEREF99";
SWEREF992315.GeographicInfo.Datum.Name = "D_SWEREF99";
SWEREF99TM.GeographicInfo.Datum.Name = "D_SWEREF99";
RT380gon = ProjectionInfo.FromEpsgCode(3028).SetNames("RT38_0_gon", "GCS_RT38", "D_Stockholm_1938");
RT3825gonO = ProjectionInfo.FromEpsgCode(3029).SetNames("RT38_25_gon_O", "GCS_RT38", "D_Stockholm_1938");
RT3825gonV = ProjectionInfo.FromEpsgCode(3027).SetNames("RT38_25_gon_V", "GCS_RT38", "D_Stockholm_1938");
RT385gonO = ProjectionInfo.FromEpsgCode(3030).SetNames("RT38_5_gon_O", "GCS_RT38", "D_Stockholm_1938");
RT385gonV = ProjectionInfo.FromEpsgCode(3026).SetNames("RT38_5_gon_V", "GCS_RT38", "D_Stockholm_1938");
RT3875gonV = ProjectionInfo.FromEpsgCode(3025).SetNames("RT38_75_gon_V", "GCS_RT38", "D_Stockholm_1938");
RT900gon = ProjectionInfo.FromEpsgCode(3022).SetNames("RT90_0_gon", "GCS_RT_1990", "D_RT_1990");
RT9025gonO = ProjectionInfo.FromEpsgCode(3023).SetNames("RT90_25_gon_O", "GCS_RT_1990", "D_RT_1990");
RT9025gonV = ProjectionInfo.FromEpsgCode(3021).SetNames("RT90_25_gon_V", "GCS_RT_1990", "D_RT_1990");
RT905gonO = ProjectionInfo.FromEpsgCode(3024).SetNames("RT90_5_gon_O", "GCS_RT_1990", "D_RT_1990");
RT905gonV = ProjectionInfo.FromEpsgCode(3020).SetNames("RT90_5_gon_V", "GCS_RT_1990", "D_RT_1990");
RT9075gonV = ProjectionInfo.FromEpsgCode(3019).SetNames("RT90_75_gon_V", "GCS_RT_1990", "D_RT_1990");
SWEREF991200 = ProjectionInfo.FromEpsgCode(3007).SetNames("SWEREF99_12_00", "GCS_SWEREF99", "D_SWEREF99");
SWEREF991330 = ProjectionInfo.FromEpsgCode(3008).SetNames("SWEREF99_13_30", "GCS_SWEREF99", "D_SWEREF99");
SWEREF991415 = ProjectionInfo.FromEpsgCode(3012).SetNames("SWEREF99_14_15", "GCS_SWEREF99", "D_SWEREF99");
SWEREF991500 = ProjectionInfo.FromEpsgCode(3009).SetNames("SWEREF99_15_00", "GCS_SWEREF99", "D_SWEREF99");
SWEREF991545 = ProjectionInfo.FromEpsgCode(3013).SetNames("SWEREF99_15_45", "GCS_SWEREF99", "D_SWEREF99");
SWEREF991630 = ProjectionInfo.FromEpsgCode(3010).SetNames("SWEREF99_16_30", "GCS_SWEREF99", "D_SWEREF99");
SWEREF991715 = ProjectionInfo.FromEpsgCode(3014).SetNames("SWEREF99_17_15", "GCS_SWEREF99", "D_SWEREF99");
SWEREF991800 = ProjectionInfo.FromEpsgCode(3011).SetNames("SWEREF99_18_00", "GCS_SWEREF99", "D_SWEREF99");
SWEREF991845 = ProjectionInfo.FromEpsgCode(3015).SetNames("SWEREF99_18_45", "GCS_SWEREF99", "D_SWEREF99");
SWEREF992015 = ProjectionInfo.FromEpsgCode(3016).SetNames("SWEREF99_20_15", "GCS_SWEREF99", "D_SWEREF99");
SWEREF992145 = ProjectionInfo.FromEpsgCode(3017).SetNames("SWEREF99_21_45", "GCS_SWEREF99", "D_SWEREF99");
SWEREF992315 = ProjectionInfo.FromEpsgCode(3018).SetNames("SWEREF99_23_15", "GCS_SWEREF99", "D_SWEREF99");
SWEREF99TM = ProjectionInfo.FromEpsgCode(3006).SetNames("SWEREF99_TM", "GCS_SWEREF99", "D_SWEREF99");
}

#endregion
Expand Down
20 changes: 20 additions & 0 deletions Source/DotSpatial.Projections/ProjectionInfoExtensions.cs
@@ -0,0 +1,20 @@
namespace DotSpatial.Projections
{
internal static class ProjectionInfoExtensions
{
/// <summary>
/// Sets names for given projection info
/// </summary>
/// <param name="pi">Projection Info</param>
/// <param name="projectionName">Projection name</param>
/// <param name="geograficInfoName">Geografic info name</param>
/// <param name="datumName">Geografic info datu name</param>
public static ProjectionInfo SetNames(this ProjectionInfo pi, string projectionName, string geograficInfoName, string datumName)
{
pi.Name = projectionName;
pi.GeographicInfo.Name = geograficInfoName;
pi.GeographicInfo.Datum.Name = datumName;
return pi;
}
}
}

0 comments on commit 7daa9a9

Please sign in to comment.