Re: Polygon projection in CountryData incorrect?
- To: mathgroup at smc.vnet.net
- Subject: [mg116338] Re: Polygon projection in CountryData incorrect?
- From: "Sjoerd C. de Vries" <sjoerd.c.devries at gmail.com>
- Date: Fri, 11 Feb 2011 04:16:38 -0500 (EST)
- References: <iitekr$jj7$1@smc.vnet.net> <ij0e75$9bm$1@smc.vnet.net>
Thanks Heike, this works great indeed. I'm tempted to consider this a bug as you would expect the projections to use the same defaults wherever in the system they're used. Cheers -Sjoerd On Feb 10, 11:21=C2 am, Heike Gramberg <heike.gramb... at gmail.com> wrote: > I don't know if it qualifies as a bug, but it seems that the > coordinates of the vertices of the polygon returned by CountryData[..., > {"Polygon", "Mercator"}] are in degrees where the point (0,0) > corresponds to the actual point (lat,lon)=(0,0) whereas the coordinates > returned by GeoGridPosition[...,"Mercator"] are in radians such that > the point (0,0) corresponds to the actual point (lat, lon)=(0,-180 > degrees). > > I guess one way to match the two coordinate systems is to adjust the > "Centering" and the "ReferenceModel" properties of the "Mercator" > projection used in GeoGridPosition, i.e. to use something like this: > > Graphics[{{FaceForm[], EdgeForm[Black], =E2=80=A8 =C2 CountryData["Net= herlands", > {"Polygon", "Mercator"}]}, Red, =E2=80=A8 =C2 PointSize[0.02],=E2=80=A8= =C2 > Point@GeoGridPosition[=E2=80=A8 =C2 =C2 GeoPosition[=E2=80=A8 =C2= =C2 =C2 CityData[{"Amsterdam", > "NoordHolland", "Netherlands"}, =E2=80=A8 =C2 =C2 =C2 "Coordinat= es"]], {"Mercator", > "Centering" -> 0, =E2=80=A8 =C2 =C2 =C2 "ReferenceModel" -> 360/2= /Pi}][[1]]=E2=80=A8 =C2 }=E2=80=A8 ] > > Heike. > > On 2011-02-09 07:10:19 +0000, "Sjoerd C. de Vries" > <sjoerd.c.devr... at gmail.com> said: > > > CountryData contains a polygon for every country. It can be output in > > various projections using a specification like =C2 {"Polygon", > > "Mercator"}. > > > However, the resulting polygon doesn't seem to be consistent with a > > transformation using GeoGridPosition and GeoPosition. > > > If I plot Amsterdam using its CityData coordinates transformed with a > > Mercator projection it falls outside the Netherland's borders (1st > > example below). When I use the alternative approach (2nd example) > > everything seems OK. Am I doing something wrong or is this a bug? > > > Graphics[ > > =C2 { > > =C2 {FaceForm[], EdgeForm[Black], > > =C2 =C2 CountryData["Netherlands", {"Polygon", "Mercator"}]}, > > =C2 Red, PointSize[0.02], > > =C2 Point@GeoGridPosition[ > > =C2 =C2 =C2 GeoPosition[ > > =C2 =C2 =C2 CityData[{"Amsterdam", "NoordHolland", "Netherland= s"}, > > =C2 =C2 =C2 =C2 "Coordinates"]], "Mercator"][[1]] > > =C2 } > > =C2 ] > > > Graphics[ > > =C2 { > > =C2 {FaceForm[], EdgeForm[Black], > > =C2 =C2 Polygon[Map[GeoGridPosition[GeoPosition[#], "Mercator"][[1= ]] &, > > =C2 =C2 =C2 CountryData["Netherlands", "Coordinates"], {2}]]}, > > =C2 Red, PointSize[0.02], > > =C2 Point@GeoGridPosition[ > > =C2 =C2 =C2 GeoPosition[ > > =C2 =C2 =C2 CityData[{"Amsterdam", "NoordHolland", "Netherland= s"}, > > =C2 =C2 =C2 =C2 "Coordinates"]], "Mercator"][[1]] > > =C2 } > > =C2 ] > > > Cheers -- Sjoerd > >