Koordinaten Breitengrad und Längegrad mit PHP programmieren

Xching

Erfahrenes Mitglied
Hallo Zusammen,

ich weiß es nicht, wie ich Koordinaten Breitengrad und Längegrad mit PHP programmieren könnte?.Ich habe OpenGeodb schon untergeladen und in PHPmyAdmin importiert. Ich habe schon Datenbank Tabelle scon angelegt. Alle Daten befindet sich schon in Datenbank aber es fehlt nur noch Koordinaten Breitengrad und Längegrad . Ich sollte str_name, plz,ort eingeben und suchen nach Koordinaten Breitengrad und Längegrad.

Mein Tabelle in PhpMyadmin :


quell_agt_nr, vkanal_nr, vkanal_name1, name2 , str_name ,postleitzahl ,ort_name , zc_lat , zc_long ,

Könnten jemand mir weiter helfen********?

Phpscript hätte ich gerne :)

Danke
 
ich weiß es nicht, wie ich Koordinaten Breitengrad und Längegrad mit PHP programmieren könnte?.
Gar nicht. Diese stehen in der Datenbank und muessen mit z.B. mit PHP ausgelesen werden.

Mein Tabelle in PhpMyadmin :

quell_agt_nr, vkanal_nr, vkanal_name1, name2 , str_name ,postleitzahl ,ort_name , zc_lat , zc_long ,
ich weis absolut nicht wie du an diese Tabellen kommst.
Wie schonmal geschrieben phpmydamin/php ist auf 2,xxMB bei standardconfig beschraenkt die opengeodb hatt ueber 50MB!.

wenn man die db bei http://opengeodb.giswiki.org/wiki/OpenGeoDB_Downloads runterlaed und richtig importiert z.B.:
Code:
mysql -u root -p opengeodb < opengeodb-begin.sql
mysql -u root -p opengeodb < DE.sql
mysql -u root -p opengeodb < opengeodb-end.sql

erhaelt man:
1euc2a43o
 
Hallo,

Ich danke ihnen , dass sie mir auf meine Frage geanwortet haben . Ich habe schon in meine Datenbank nachgeschaut, Ich habe alles richtig untergeladen und richtig importiert außerdem habe ich neue Tabelle in PhpMyadmin angelegt und der heißt Agentur und ich habe quell_agt_nr, vkanal_nr, vkanal_name1, name2 , str_name ,postleitzahl ,ort_name schon fest gelegt und jetzt möchte ich Koordinaten Länge und Breite nach diesem Ort, Straßename, PLZ berechnen aber ich weiß es nicht, wie ich machen soll. Ich weß auch, dass ich Anfänger bin.

Ich hoffe , dass sie weiter helfen könnten.

Danke
 
Koordinaten Länge und Breite mit PHP

Hallo Zusammen,
Ich kann nicht weiter, könnten jemand mir weiter helfen

Koordinatensuche.php
PHP:
<?php
/* * * * * * * * * * * * * * * * * * * * * * * * *
	Klasse koordinatensuche
	
 * * * * * * * * * * * * * * * * * * * * * * * * */
 
class koordinatensuche {
	// Erdradius in Kilometern
	private $Erdradius = 6371;
	// mysql link identifier
	private $db;
	// Datentabelle
	private $table = false;
	// Fehler zeigen?
	public $zeigeFehler = true;

	public function __construct($db, $table = 'koordinaten') {
		if (!is_resource($db) || get_resource_type($db) != 'mysql link') {
			trigger_error('Keine MySQL-Ressource übergeben', E_USER_ERROR);
		}
		$this->db = $db;
		$this->table = $table;

		// leere Koordinaten in Tabelle füllen
		$sql = 'SELECT `id`, `straße`, `Ortname´,´plz´
				FROM `' . $this->table . '`
				WHERE
					`KoordX` = "0"
				AND `KoordY` = "0"
				AND `KoordZ` = "0"
				';
		$re = mysql_query($sql, $this->db);
		while ($rd = mysql_fetch_object($re)) {
			if (!$this->StraßeKoord($rd->straße, $lon, $lat)) {
				if ($this->zeigeFehler) {
					trigger_error('Straße ' . $rd->straße . ' konnte nicht zugeordnet werden', E_USER_NOTICE);
				}
				continue;
			}
					$this->Kugel2Kartesisch($lon, $lat, $x, $y, $z);
			$sql = 'UPDATE `' . $this->table . '`
					SET
						`Longitude` = "' . $lon . '",
						`Latitude` = "' . $lat . '",
						`KoordX` = "' . $x . '",
						`KoordY` = "' . $y . '",
						`KoordZ` = "' . $z . '"
					WHERE
						`ID` = "' . (int)$rd->ID . '"
					';
			mysql_query($sql, $this->db);
		}
	
$re1 = mysql_query($sql, $this->db);
		while ($rd = mysql_fetch_object($re)) {
			if (!$this->OrtnameKoord($rd->Ortname, $lon, $lat)) {
				if ($this->zeigeFehler) {
					trigger_error('Ortname ' . $rd->Ortname . ' konnte nicht zugeordnet werden', E_USER_NOTICE);
				}
				continue;
			}
					$this->Kugel2Kartesisch($lon, $lat, $x, $y, $z);
			$sql = 'UPDATE `' . $this->table . '`
					SET
						`Longitude` = "' . $lon . '",
						`Latitude` = "' . $lat . '",
						`KoordX` = "' . $x . '",
						`KoordY` = "' . $y . '",
						`KoordZ` = "' . $z . '"
					WHERE
						`ID` = "' . (int)$rd->ID . '"
					';
			mysql_query($sql, $this->db);
		}


$re2 = mysql_query($sql, $this->db);
		while ($rd = mysql_fetch_object($re)) {
			if (!$this->Plz2Koord($rd->plz, $lon, $lat)) {
				if ($this->zeigeFehler) {
					trigger_error('PLZ ' . $rd->plz . ' konnte nicht zugeordnet werden', E_USER_NOTICE);
				}
				continue;
			}
					$this->Kugel2Kartesisch($lon, $lat, $x, $y, $z);
			$sql = 'UPDATE `' . $this->table . '`
					SET
						`Longitude` = "' . $lon . '",
						`Latitude` = "' . $lat . '",
						`KoordX` = "' . $x . '",
						`KoordY` = "' . $y . '",
						`KoordZ` = "' . $z . '"
					WHERE
						`ID` = "' . (int)$rd->ID . '"
					';
			mysql_query($sql, $this->db);
		}
}
		
	public function Kugel2Kartesisch($lon, $lat, &$x, &$y, &$z) {
		$lambda = $lon * pi() / 180;
		$phi = $lat * pi() / 180; 
		$x = $this->Erdradius * cos($phi) * cos($lambda);
		$y = $this->Erdradius * cos($phi) * sin($lambda);
		$z = $this->Erdradius * sin($phi); 
		return true;
	}
public function StraßeKoord($straße, &$lon, &$lat) {
		$sql = 'SELECT
					coo.lon,
					coo.lat
				FROM geodb_coordinates AS coo
				INNER JOIN geodb_textdata AS textdata
				ON textdata.loc_id = coo.loc_id
				WHERE
					textdata.text_val = "' . mysql_real_escape_string($straße, $this->db) . '"
				AND textdata.text_type = "500100000"
				LIMIT 1';
		$re = mysql_query($sql, $this->db);
		if (mysql_num_rows($re) != 1) {
			return false;
		}
		list($lon, $lat) = mysql_fetch_row($re);
		return true;
	}
public function OrtnameKoord($Ortname, &$lon, &$lat) {
		$sql = 'SELECT
					coo.lon,
					coo.lat
				FROM geodb_coordinates AS coo
				INNER JOIN geodb_textdata AS textdata
				ON textdata.loc_id = coo.loc_id
				WHERE
					textdata.text_val = "' . mysql_real_escape_string($Ortname, $this->db) . '"
				AND textdata.text_type = "500100000"
				LIMIT 1';
		$re = mysql_query($sql, $this->db);
		if (mysql_num_rows($re) != 1) {
			return false;
		}
		list($lon, $lat) = mysql_fetch_row($re);
		return true;
	}
	
	public function Plz2Koord($plz, &$lon, &$lat) {
		$sql = 'SELECT
					coo.lon,
					coo.lat
				FROM geodb_coordinates AS coo
				INNER JOIN geodb_textdata AS textdata
				ON textdata.loc_id = coo.loc_id
				WHERE
					textdata.text_val = "' . mysql_real_escape_string($plz, $this->db) . '"
				AND textdata.text_type = "500300000"
				LIMIT 1';
		$re = mysql_query($sql, $this->db);
		if (mysql_num_rows($re) != 1) {
			return false;
		}
		list($lon, $lat) = mysql_fetch_row($re);
		return true;
	}
	
	public function Suche($straße,$Ortname,$plz, $Radius, $Spalten = array(), $Reihenfolge = false, $Richtung = 'ASC') {
		if (!is_array($Spalten) || count($Spalten) == 0) {
			$Spalten = '*';
		} else {
			$Spalten = '`' . implode('`, `', $Spalten) . '`';
		}
	if (!$this->straßeKoord($straße, $lon, $lat)) {
			if ($this->zeigeFehler) {
				trigger_error('Straße ' . $straße . ' konnte nicht zugeordnet werden', E_USER_NOTICE);
			}
			return false;
		}
		
	if (!$this->OrtnameKoord($Ortname, $lon, $lat)) {
			if ($this->zeigeFehler) {
				trigger_error('Ortname ' . $Ortname . ' konnte nicht zugeordnet werden', E_USER_NOTICE);
			}
			return false;
		}
		if (!$this->Plz2Koord($plz, $lon, $lat)) {
			if ($this->zeigeFehler) {
				trigger_error('Postleitzahl ' . $plz . ' konnte nicht zugeordnet werden', E_USER_NOTICE);
			}
			return false;
		}
	
		$this->Kugel2Kartesisch($lon, $lat, $UrsprungX, $UrsprungY, $UrsprungZ);
		
		$sql = 'SELECT ' . $Spalten . '
				FROM `' . $this->table . '`
				WHERE
					KoordX >= ' . ($UrsprungX - $Radius) . '
				AND KoordX <= ' . ($UrsprungX + $Radius) . '
				AND KoordY >= ' . ($UrsprungY - $Radius) . '
				AND KoordY <= ' . ($UrsprungY + $Radius) . '
				AND KoordZ >= ' . ($UrsprungZ - $Radius) . '
				AND KoordZ <= ' . ($UrsprungZ + $Radius) . '
				AND POWER(' . $UrsprungX .' - KoordX, 2)
				  + POWER(' . $UrsprungY .' - KoordY, 2)
				  + POWER(' . $UrsprungZ .' - KoordZ, 2)
					<= "' . pow(2 * $this->Erdradius * sin($Radius / (2 * $this->Erdradius)), 2) . '"';
		if ($Reihenfolge && strpos($Spalten, $Reihenfolge) !== false) {
			$Richtung = (strtoupper($Richtung) == 'DESC') ? 'DESC' : 'ASC';
			$sql .= "\n" . 'ORDER BY `' . $Reihenfolge . '` ' . $Richtung;
		}
		$re = mysql_query($sql, $this->db);
		$result = array();
		while ($rd = mysql_fetch_object($re)) {
			$result[] = $rd;
		}
		return $result;
	}

}
?>

Koordinatausgabe.php

PHP:
<?php
define ( 'MYSQL_HOST', 'XXXXX' );
define ( 'MYSQL_BENUTZER', 'XXXX' );
define ( 'MYSQL_KENNWORT', 'XXXX' );
define ( 'MYSQL_DATENBANK','XXXX' );

?>
<head>

<title>Koordinaten Länge und Breite</title>
<x name="description" content="Lernen in PHP und MySQL realisierte Koordinatensuche auf Basis der OpenGeoDB." />
<link rel="stylesheet" type="text/css" href="style.css" />
</head>

<body>
<div id="content">
<bR><br>

PHP:
<?php

$straße = trim((get_magic_quotes_gpc()) ? stripslashes($_REQUEST['straße']) : $_REQUEST['straße']);
$Ortname = trim((get_magic_quotes_gpc()) ? stripslashes($_REQUEST['Ortname']) : $_REQUEST['Ortname']);
$plz = trim((get_magic_quotes_gpc()) ? stripslashes($_REQUEST['plz']) : $_REQUEST['plz']);
/*$Entfernung = trim((get_magic_quotes_gpc()) ? stripslashes($_REQUEST['Entfernung']) : $_REQUEST['Entfernung']);*/
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="get">
<table>
<tr>
	<td>Straße:</td>
	<td><input type="text" name="straße" value="<?php echo htmlentities($straße); ?>" /></td>
</tr>
<tr>
	<td>Ortname:</td>
	<td><input type="text" name="Ortname" value="<?php echo htmlentities($Ortname); ?>" /></td>
</tr>
<tr>
	<td>Postleitzahl:</td>
	<td><input type="text" name="plz" value="<?php echo htmlentities($plz); ?>" /></td>
</tr>

<tr>
	<td>&nbsp;</td>
	<td><input type="submit" value="Suche starten" /></td>
</tr>
</table>
</form>

PHP:
<?php

###########Meine Frage#######################

1. Wie berechne ich Koordinaten Länge und Breite nach Straße, Ortname, PLZ ********
2. Koordinaten Länge und Breite in PhpMyadmin speichern aber wie****
3. wie sollte ich programmieren********




 ?>
 
1. Du kannst die Koordinaten Länge und Breite nicht nach einer Adresse berechnen
2. Um Daten in einer Datenbank zu speichern benutze den INSERT befehl, speziell in phpmyadmin kannst du auch auf Einfügen drücken, wenn du eine Tabelle ausgewählt hast
3. Programmieren solltest du mit Köpfchen und mit den Fingern auf den Tasten :)
 

Neue Beiträge

Zurück