Skip to content
This repository has been archived by the owner on Jan 1, 2021. It is now read-only.

Relation naming and detection of end nodes #73

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 39 additions & 6 deletions net/systemeD/halcyon/connection/Relation.as
Original file line number Diff line number Diff line change
Expand Up @@ -145,9 +145,37 @@ package net.systemeD.halcyon.connection {
if ( relTags["name"] ) { desc += " " + relTags["name"]; named=true; }
// handle node->node routes
if ( !named && relTags["type"] && relTags["type"]=="route" ) {
var firstName:String=getSignificantName(getFirstMember().entity);
var lastName:String=getSignificantName(getLastMember().entity);
if ((firstName+lastName)!='') desc+=" "+firstName+"-"+lastName;
var firstName:String = '';
var lastName:String = '';

var aMember:Entity = getMember(0).entity;
var bMember:Entity = getMember(1).entity;
if (aMember.getType() == 'way') {
if (Way(aMember).getFirstNode()==Way(bMember).getFirstNode() || Way(aMember).getFirstNode()==Way(bMember).getLastNode()) {
firstName += getNodeName(Way(aMember).getLastNode());
} else {
firstName += getNodeName(Way(aMember).getFirstNode());
}
} else if (aMember.getType() == 'node') {
firstName += getNodeName(Node(aMember));
}

aMember = getMember(members.length - 1).entity;
bMember = getMember(members.length - 2).entity;
if (aMember.getType() == 'way') {
if (Way(aMember).getFirstNode()==Way(bMember).getFirstNode() || Way(aMember).getFirstNode()==Way(bMember).getLastNode()) {
lastName += getNodeName(Way(aMember).getLastNode());
} else {
lastName += getNodeName(Way(aMember).getFirstNode());
}
} else if (aMember.getType() == 'node') {
lastName += getNodeName(Node(aMember));
}

if ((firstName+lastName)!='') {
if ( firstName < lastName ) desc+=" ("+firstName+"-"+lastName+")";
else desc+=" ("+lastName+"-"+firstName+")";
}
}
return desc;
}
Expand All @@ -156,6 +184,13 @@ package net.systemeD.halcyon.connection {
var relTags:Object = getTagsHash();
return relTags["type"] ? relTags["type"] : getType();
}

private function getNodeName(node:Node):String {
var t:String;
t=node.getTag('name');
if (!t) t=node.getTagByRegex(/ref$/);
return t ? t : '';
}

private function getSignificantName(entity:Entity):String {
if (!entity.loaded || (entity is Relation)) return '';
Expand All @@ -166,9 +201,7 @@ package net.systemeD.halcyon.connection {
if (t=='') t=getSignificantName(Way(entity).getLastNode());
return t;
}
t=Node(entity).getTag('name');
if (!t) t=Node(entity).getTagByRegex(/ref$/);
return t ? t : '';
return getNodeName(Node(entity));
}

public override function getType():String {
Expand Down