Willkommen bei Hobbybrauer.de Willkommen bei Hobbybrauer.de
Startseite Forumsübersicht Impressum  
Hauptmenü

Suche
archiv.hobbybrauer.de mit Google durchsuchen:

Board Index FAQ
Forum

ACHTUNG: Auf dieses Forum kann nur noch lesend zugegriffen werden. Falls Du hier im alten Forum bereits registriert warst, musst Du Dich im neuen Forum mit dem gleichen Usernamen UND der gleichen E-Mailadresse NEU registrieren, damit Dein Ranking (Anzahl Deiner Posts) aus diesem Forum ins neue mit übernommen wird. Zum neuen Forum geht's hier

     
Autor: Betreff: "Wo kommen wir her"
Senior Member
Senior Member

raehmle
Beiträge: 378
Registriert: 10.12.2004
Status: Offline
Geschlecht: männlich
red_folder.gif erstellt am: 13.9.2007 um 12:59  
Hallo,

als der Frika mich eben zur Bierprobe eingeladen hat (http://hobbybrauer.de/modules.php?name=eBoard&file=viewthread &tid=4980#pid47857) hab ich mich mal wieder auf die "Wo kommen wir her"-Seite (http://hobbybrauer.de/modules.php?name=locator) geklickt, um zu schauen, wo ich denn hin müsste.

Nur leider kommt man da natürlich nicht weiter, es sei denn, man klickt sich durch alle Bundesländer und fährt dann mit der Maus über jeden roten Punkt... ;)



Ab hier an die EDV-Begeisterten:
Da hab ich mir dann gedacht, dass es doch eigentlich recht einfach sein müsste, anstatt der aktuellen Bundesland-Bilder einfach ein Google-Maps einzubinden. Man müsste sich einmal ein kleines Skript schreiben, das die aktuell in der DB gespeicherten Koordinaten in Breiten-/Längengrade umrechnet und könnte dann mit wenigen Zeilen ein Google-Maps-Mashup zusammen bauen. Das wäre dann natürlich auch beliebig ausbaufähig in dem Sinne, dass jeder der Lust hat z.B. ein Foto seiner Brauanlage zu seinem Marker platzieren könnte, man könnte eine einfache Personensuchfunktion einbauen, ...

Was haltet Ihr davon, insbes. @Ughi, ich glaube, Du hast doch damals diese Seite gebaut?


Fabi


____________________
http://fabier.de
Profil anzeigen Homepage besuchen
Posting Freak
Posting Freak

frikadellenschmied
Beiträge: 1705
Registriert: 25.7.2005
Status: Offline
Geschlecht: männlich
red_folder.gif erstellt am: 13.9.2007 um 13:59  
Das wäre sicherlich interessant, die Darstellung sollte dann aber etwas größer sein. loerpel wohnt 10 min von mir, wie soll ich da einen "vernüftigen" Punkt setzen? ;)


____________________
Ich esse Fleisch, weil mir die kleinen Tofus so leid tun und Saitan scheisse schmeckt!
Profil anzeigen Homepage besuchen Antwort 1
Senior Member
Senior Member

raehmle
Beiträge: 378
Registriert: 10.12.2004
Status: Offline
Geschlecht: männlich
red_folder.gif erstellt am: 13.9.2007 um 15:22  
Nochmal ich:


ich habe mir mal den Spaß gemacht, die Daten von BaWü in eine kleine Demo-Landkarte einzuspielen. Sieht dann so aus: http://fabier.de/gm.html

Also ich find das geil ;)


Fabi



Ach ja, und bevor jemand fragt: Nein, ich habe nicht von Hand alle Positionspunkte übertragen ;)


____________________
http://fabier.de
Profil anzeigen Homepage besuchen Antwort 2
Gast

Gast
red_folder.gif erstellt am: 13.9.2007 um 18:13  
Super !
Mehr davon !
So wüsste ich, wo in der Region die HausbrauerInen wohnen.

Allzeit Gut Sud
Hopfen und Malz rein in den Hals

Jürgen
Antwort 3
Senior Member
Senior Member


Beiträge: 248
Registriert: 3.4.2006
Status: Offline
Geschlecht: männlich
red_folder.gif erstellt am: 13.9.2007 um 22:23  
Huhu,

wie wärs mit Ortsmarken in Google Earth? Einfach den eigenen Ort markieren, kurze Beschreibung dazu, das ganze als Datei speichern und hier hochladen. Diese Datei muß erweitert und von jedem hier in der Runde selbständig ergänzt und erneut hochgeladen werden.

MfG
Thomas
Profil anzeigen Antwort 4
Moderator
Posting Freak

Uwe12
Beiträge: 4922
Registriert: 5.4.2005
Status: Offline
red_folder.gif erstellt am: 13.9.2007 um 22:28  
Hallo Fabi!

Schönes Beispiel! :)
Lt. Google-Earth hause ich in N49° 59' 57,90'' / O 09° 09' 13,33''
im Raum bei N49° 59' 58,07'' / O 09° 09' 13,21'' ist meine Bierkühltruhe! ;)
Und so bei N49° 59' 58,02'' / O 09° 09' 12,93'' ist meine "Gärwerkstatt"! :D
Meine fette Drehschüssel sieht man aber leider nicht! :exclam:
Nun, mancher wird sich nicht so exakt exponieren wollen, aber die Idee einer besseren Karte hat was!

Uwe


____________________
Profil anzeigen E-mail senden Antwort 5
Posting Freak
Posting Freak


Beiträge: 824
Registriert: 14.6.2005
Status: Offline
Geschlecht: männlich
red_folder.gif erstellt am: 13.9.2007 um 23:18  
Also ich finds auch geil :) , sollte man sich wirklich mal Gedanken drüber machen.

Meine Koordinaten: 49 28' 05,37" 08 28' 17,25" Zuhause und
49 27' 06,21" 08 27' 58,76" mein Schrebergarten.


____________________
PS: HIER gehts zur Tauschbörse für Hobbybrauer :)
Profil anzeigen E-mail senden Homepage besuchen Antwort 6
Posting Freak
Posting Freak

ughi
Beiträge: 833
Registriert: 6.4.2003
Status: Offline
Geschlecht: männlich
red_folder.gif erstellt am: 14.9.2007 um 07:42  
@raehmle:
Nett! ich wusste gar nicht, dass die die API und alles zur Verfügung stellen. Dein Beispiel zeigt aber, dass es ziemlich einfach scheint :) Natürlich ist mein modul etwas veraltet, und die Einbindung in Google Maps wäre damit kein Thema! Habe schnell geschaut und festgestellt, dass man sogar "EventListener" definieren kann, so dass man auf Clicks auf der Karte reagieren kann.

Ich weiss noch nicht wann ich dazu komme das einzubinden, aber die Idee ist super! - das Schwierigste wird wohl die Umrechnung der Koordinaten, denke ich.
Programmiertechnisch für mich Dank der geilen Google API kaum Aufwand.
Vielleicht schreibe ich auch ein neues Modul, und kümmere mich erst später um die genaue Umrechnung... So genau sind die alten Daten ja nicht...


____________________
Viele Grüße, Matthias
http://www.good-beer.de
Profil anzeigen Homepage besuchen Antwort 7
Senior Member
Senior Member

raehmle
Beiträge: 378
Registriert: 10.12.2004
Status: Offline
Geschlecht: männlich
red_folder.gif erstellt am: 14.9.2007 um 07:56  
Hallo Ughi,

Zitat:
Ich weiss noch nicht wann ich dazu komme das einzubinden, aber die Idee ist super! - das Schwierigste wird wohl die Umrechnung der Koordinaten, denke ich.
Programmiertechnisch für mich Dank der geilen Google API kaum Aufwand.
Vielleicht schreibe ich auch ein neues Modul, und kümmere mich erst später um die genaue Umrechnung... So genau sind die alten Daten ja nicht...


die Umrechnung ist einfach - ich habs ja auch net von Hand gemacht ;)
In bin so vorgegangen: Ein Punkt links unten, ein Punkt rechts oben (Freiburg/Stuttgart). Dazu die Koordinaten in GoogleMaps rausgesucht und die in Pixeln auf der aktuellen Karte. Daraus kannst Du berechnen, wieviel Längen-/Breitengrade ein Pixel ist und kannst das relativ zu einem Offset (hier Freiburg) dann in echte Koordinaten umrechnen. Für die übrigen Karten müsste man nur noch einen Offset jeweils in GoogleMaps und auf der Karte ermitteln (der Maßstab der einzelnen Karten stimmt überein, vermute ich?).

Ich hab dazu ein Mini-Java-Programm geschrieben, kann ich Dir auch schicken wenn Du willst.
Alternativ kann ich auch bei der Entwicklung des Moduls helfen, will mich da aber natürlich nicht aufdrängen.


Gruß,
Fabi


____________________
http://fabier.de
Profil anzeigen Homepage besuchen Antwort 8
Senior Member
Senior Member

raehmle
Beiträge: 378
Registriert: 10.12.2004
Status: Offline
Geschlecht: männlich
red_folder.gif erstellt am: 14.9.2007 um 09:10  
So,

ich habe mal BaWü, Niedersachsen, Schleswig-Holstein, NRW, Hessen und Bayern in die Demo-Karte übernommen (immer noch http://fabier.de/gm.html).

Man sieht jetzt allerdings, dass es recht langsam wird wenn viele Marker hinterlegt sind. Es wäre also vermutlich clever, nicht alle in die Karte zu zeichnen sonder (ähnlich wie momentan) verschiedene Auswahlen zu ermöglichen ("zeige mein Bundesland", "zeige Hessen", ..., "zeige alle", "suche raehmle").

Jetzt muss ich mal wieder war arbeiten ;)


Fabi


____________________
http://fabier.de
Profil anzeigen Homepage besuchen Antwort 9
Moderator
Posting Freak

Uwe12
Beiträge: 4922
Registriert: 5.4.2005
Status: Offline
red_folder.gif erstellt am: 14.9.2007 um 11:48  
...wobei man bei "echten" Karten (etwa die Top50er) nicht so ganz "linear" rechnen kann.
Da sind 20 Clicks in "irgendwas, wie Bogensekunden" gerechnet nicht unbedingt genau das doppelte von 10.
Denn einmal hat man noch die Erdkrümmung und dann ist die "Erdkugel" eher etwas "kartoffeliges". ;)

Der Effekt ist mir mal aufgefallen, als ich ein kleines Wander-Suchspiel in JavaScript gefummelt habe und
die Koordinaten auf der Grafik in "echte" umrechnen wollte. :)

Uwe


____________________
Profil anzeigen E-mail senden Antwort 10
Posting Freak
Posting Freak

ughi
Beiträge: 833
Registriert: 6.4.2003
Status: Offline
Geschlecht: männlich
red_folder.gif erstellt am: 14.9.2007 um 11:52  
Stimmt, der Ma*stab ist bei allen Bundesl*ndern gleich. wie sind denn deine errechneten Faktoren f*r L*ngen und Breitengrade? Intern speichere ich deutschland gesamt als Koordinaten ab, und dann rechne ich die Offsets f*r die Bundesland-Bilder heraus. d.h. ich brauche genau einen Fixpunkt, muss diesen dann auch in Google maps m*glichst genau finden. Wie waren denn deine verwendeten Faktoren?

Bez*glich der Ladezeit muss man halt schauen... Grunds*tzlich w*rde ich nur die Laden, die auch im aktuellen kartenausschnitt zu sehen sind. (via Ajax) und dann beim navigieren erneut laden. Wenn in einer niedrien Zoomstufe zu viele in einen Bereich fallen w*rden, kann man sie ja weglassen oder gruppieren. (spezialmarker)


____________________
Viele Grüße, Matthias
http://www.good-beer.de
Profil anzeigen Homepage besuchen Antwort 11
Senior Member
Senior Member

raehmle
Beiträge: 378
Registriert: 10.12.2004
Status: Offline
Geschlecht: männlich
red_folder.gif erstellt am: 14.9.2007 um 12:04  

Zitat:
...wobei man bei "echten" Karten (etwa die Top50er) nicht so ganz "linear" rechnen kann.


Das ist schon richtig, aber:
1. Ist der Fehler recht gering wenn man das pro Bundesland macht
2. Sind die Orginaldaten ohnehin beliebig schlecht

Passt also ganz gut so ;)


____________________
http://fabier.de
Profil anzeigen Homepage besuchen Antwort 12
Senior Member
Senior Member

raehmle
Beiträge: 378
Registriert: 10.12.2004
Status: Offline
Geschlecht: männlich
red_folder.gif erstellt am: 14.9.2007 um 12:06  
@ughi: Hier das Programm:


Quelltextbereich einfügen:
import java.io.File;
import java.io.IOException;
import java.util.StringTokenizer;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpression;
import javax.xml.xpath.XPathExpressionException;
import javax.xml.xpath.XPathFactory;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

/**
 * Download HTML files and convert to xml:
 * tidy -asxml -numeric /tmp/x.html | sed  "s/<!--.*-->//g" >/tmp/x.xml
 */
public class HobbybrauerCoordinates {

	private static DocumentBuilder docBuilder;	
	private static XPathExpression xPath;

	private static LatLngLocation pixTopRight;
	private static LatLngLocation refTopRight;
	private static LatLngLocation pixBottomLeft;
	private static LatLngLocation refBottomLeft;
	
	private static double factorX;
	private static double factorY;
	
	static class LatLngLocation {
		double y;
		double x;
		public LatLngLocation(double y, double x) {this.y=y; this.x=x;};
	}
	
	static class PixelLocation extends LatLngLocation {
		public PixelLocation(int y, int x) { super(y, x); };
	};
		
	static class Task {
		String fileName;
		String title;
		LatLngLocation pixOffset;
		LatLngLocation realOffset;
		
		public Task(String fileName, String title, PixelLocation pixOffset, LatLngLocation realOffset) {
			this.fileName = fileName; 
			this.title = title; 
			this.pixOffset = pixOffset; 
			this.realOffset = realOffset; 
		};
		
		public void convert() throws SAXException, IOException, ParserConfigurationException, XPathExpressionException {
			Document doc = docBuilder.parse(new File(this.fileName));		
			Object result = xPath.evaluate(doc, XPathConstants.NODESET);
			NodeList nodes = (NodeList) result;				
					
			System.out.println("// " + this.title);
			for (int i=0; i<nodes.getLength(); i++) {
				Element topEl = (Element) nodes.item(i);
				
				// ....<span style="...left:...;top:..."><span>membername</span></span>					
				StringTokenizer tokenizer = new StringTokenizer(topEl.getAttribute("style"), ";");
				// skip one style attr.
				tokenizer.nextToken();			
				
				// get pixel coordinates
				int pixX = Integer.parseInt(tokenizer.nextToken().replace("left:", "").replace("px", ""));
				int pixY = Integer.parseInt(tokenizer.nextToken().replace("top:", "").replace("px", ""));
				PixelLocation memberLoc = new PixelLocation(pixY, pixX);
				
				// the one and only child element is <span>name</span>
				Element nameElement = (Element) topEl.getElementsByTagName("span").item(0);
										
				LatLngLocation newMemberLoc = new LatLngLocation(
						((memberLoc.y - this.pixOffset.y) * factorY) + this.realOffset.y,
						((memberLoc.x - this.pixOffset.x) * factorX) + this.realOffset.x);
						
				String memberName = nameElement.getTextContent().replace("n", ""); 
				String s = String.format("map.addOverlay(new GMarker(new GLatLng(%.4f, %.4f), {draggable:true, title:"%s"}));", new Object[]{newMemberLoc.y, newMemberLoc.x, memberName});
				System.out.println(s);
			}			
		}
	}
			
	/**
	 * @param args
	 * @throws ParserConfigurationException 
	 * @throws IOException 
	 * @throws SAXException 
	 * @throws XPathExpressionException 
	 */
	public static void main(String[] args) throws SAXException, IOException, ParserConfigurationException, XPathExpressionException {
		// init xml stuff
		docBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
		xPath = XPathFactory.newInstance().newXPath().compile("//html/body/table/tr/td/form/div/span/span");
		
		// calculate scale factor pixel<->lat/lng		
		// Hamburg
		pixTopRight = new PixelLocation(51, 300);
		refTopRight = new LatLngLocation(53.554994,10.011292);
		// Essen
		pixBottomLeft = new PixelLocation(349, 30);
		refBottomLeft = new LatLngLocation(51.460425, 7.02095);
		
		factorX = (refTopRight.x - refBottomLeft.x) / (pixTopRight.x - pixBottomLeft.x);
		factorY = (refTopRight.y - refBottomLeft.y) / (pixTopRight.y - pixBottomLeft.y);
		
		(new Task("/tmp/bawue.xml", "Baden-Wuerttemberg (Offset: Freiburg)", new PixelLocation(258, 40), new LatLngLocation(47.999571, 7.837372))).convert();
		(new Task("/tmp/niedersachsen.xml", "Niedersachsen (Offset: Hamburg)", new PixelLocation(51, 300), new LatLngLocation(53.554994, 10.011292))).convert();
		(new Task("/tmp/schleswig.xml", "Schleswig-Holstein (Offset: Kiel)", new PixelLocation(114, 161), new LatLngLocation(54.322931, 10.141068))).convert();
		(new Task("/tmp/nrw.xml", "NRW (Offset: Dortmund)", new PixelLocation(149, 155), new LatLngLocation(51.513443, 7.46933))).convert();
		(new Task("/tmp/hessen.xml", "Hessen (Offset: Frankfurt)", new PixelLocation(229, 83), new LatLngLocation(50.112653, 8.686066))).convert();
		(new Task("/tmp/bayern.xml", "Bayern (Offset: Nuernberg)", new PixelLocation(161, 201), new LatLngLocation(49.452057, 11.085892))).convert();		
	}
}





edit: sch****e, Backslashes werden rausgeworfen. Ughi, gib mir mal Deine E-Mail-Adr, dann schick ich Dir das File.


[Editiert am 14.9.2007 um 12:08 von raehmle]



____________________
http://fabier.de
Profil anzeigen Homepage besuchen Antwort 13
Posting Freak
Posting Freak

ughi
Beiträge: 833
Registriert: 6.4.2003
Status: Offline
Geschlecht: männlich
red_folder.gif erstellt am: 16.9.2007 um 08:58  
Nicht nötig, danke, das reicht mir schon ;)

Ich bin faul und verwende ein SQL-Update-Statement mit einer Formel in diesem Stil:

Quelltextbereich einfügen:
Stralsund 773	119	13,083980	54,309300
Freiburg  300	1037	7,848270	47,998110
Eisenach  539	607	10,314110	50,984390


fx (13.083980-7.848270)/(773-300)
fy (54.309300-47.998110)/(119-1037)


nx (x-539)*(13.083980-7.848270)/(773-300) + 10.314110
ny (y-607)*(54.309300-47.998110)/(119-1037) + 50.984390




____________________
Viele Grüße, Matthias
http://www.good-beer.de
Profil anzeigen Homepage besuchen Antwort 14
Gast

Gast
red_folder.gif erstellt am: 17.9.2007 um 13:09  
Hallo !
Die von mir auf der Mitgliederkarte gesetzte Ortsmarke wich doch über 20 km vom der tatsächlichen Position ab. Dazu mußte ich mich auf der Karte von Fabi erst richtig im Hybridstatus runter vergößern und die Marke neu setzen. Auch die Marken von mir bekannten Hausbrauern weichen doch ganz schön ab. Es müßten also doch die genauen Koordinaten eingegeben werden.
So eine genauere Verson wäre schon gut.
Allzeit Gut Sud
Hopfen und Malz rein in Hals

Jürgen
Antwort 15
Member
Member


Beiträge: 92
Registriert: 25.9.2004
Status: Offline
Geschlecht: männlich
red_folder.gif erstellt am: 21.9.2007 um 20:25  
Hi Leute, lange Zeit ohne zu schreiben!
Ich hab die Mitgliederkarte gesehen und finde es super.
Gut gemacht :thumbup:

Jetzt können wir uns besuchen :D

Best regards

Alberto
Puerto Montt
CHILE
Profil anzeigen Homepage besuchen Antwort 16
       

 
  
 

Alle Logos und Warenzeichen auf dieser Seite sind Eigentum der jeweiligen Besitzer und Lizenzhalter.
Im übrigen gilt Haftungsausschluss. Weitere Details findest Du im Impressum.
Die Artikel sind geistiges Eigentum des/der jeweiligen Autoren,
alles andere © 1998 - 2022 by Hobbybrauer.de
Die Inhalte dieser Seite sind als RSS/RDF-Quelle verfügbar.
Die Website oder Teile daraus dürfen nicht ohne ausdrückliche Zustimmung von Michael Plum weiterverwendet werden.
© 2014 Michael Plum