summaryrefslogtreecommitdiff
path: root/navit/projection.c
diff options
context:
space:
mode:
authormartin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220>2009-05-27 13:45:54 +0000
committermartin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220>2009-05-27 13:45:54 +0000
commit1cf3ebc267ec6d5358990e79b3e38ffe8e2de729 (patch)
tree9697447235e4b6552da83f2163b6f0fc1c4e2350 /navit/projection.c
parent6a69500ae9abb0bac14804d439f4d79a6cba8d48 (diff)
downloadnavit-1cf3ebc267ec6d5358990e79b3e38ffe8e2de729.tar.gz
Add:Core:Added support for utm projection
git-svn-id: http://svn.code.sf.net/p/navit/code/trunk/navit@2291 ffa7fe5e-494d-0410-b361-a75ebd5db220
Diffstat (limited to 'navit/projection.c')
-rw-r--r--navit/projection.c17
1 files changed, 15 insertions, 2 deletions
diff --git a/navit/projection.c b/navit/projection.c
index eae465dd7..65db1944f 100644
--- a/navit/projection.c
+++ b/navit/projection.c
@@ -33,23 +33,36 @@ struct projection_name projection_names[]={
{projection_none, ""},
{projection_mg, "mg"},
{projection_garmin, "garmin"},
+ {projection_utm, "utm"},
+ {projection_gk, "gk"},
};
enum projection
-projection_from_name(const char *name)
+projection_from_name(const char *name, struct coord *offset)
{
int i;
+ int zone;
+ char ns;
+ dbg(0,"name=%s\n",name);
for (i=0 ; i < sizeof(projection_names)/sizeof(struct projection_name) ; i++) {
if (! strcmp(projection_names[i].name, name))
return projection_names[i].projection;
}
+ if (offset) {
+ dbg(0,"%s %d\n",name,sscanf(name,"utm%d%c",&zone,&ns));
+ if (sscanf(name,"utm%d%c",&zone,&ns) == 2 && zone > 0 && zone <= 60 && (ns == 'n' || ns == 's')) {
+ offset->x=zone*1000000;
+ offset->y=(ns == 's' ? -10000000:0);
+ return projection_utm;
+ }
+ }
return projection_none;
}
char *
-projection_to_name(enum projection proj)
+projection_to_name(enum projection proj, struct coord *offset)
{
int i;