GOV/Webservice/PHP: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
(Korr.: searchDescendantsByTypeAtDate (gibt es nicht) -> searchDescendantsByTypeYear, + Beispiel) |
("gov-test" durch "gov" ersetzt) |
||
(7 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
== Position ausgeben == | == Position ausgeben == | ||
Dieses Skript gibt den (ersten) Namen und die Position des Ortes aus: | Dieses Skript gibt den (ersten) Namen und die Position des Ortes aus: | ||
<php><?php | <source lang="php"><?php | ||
$readclient = new SoapClient('http://gov | $readclient = new SoapClient('http://gov.genealogy.net/services/SimpleService?wsdl'); | ||
$place =$readclient->getObject('SCHERGJO54EJ'); | $place =$readclient->getObject('SCHERGJO54EJ'); | ||
Zeile 10: | Zeile 10: | ||
echo $name ." liegt bei ".$longitude."°O ".$latitude."°N.\n"; | echo $name ." liegt bei ".$longitude."°O ".$latitude."°N.\n"; | ||
?></ | ?></source> | ||
== Position setzen == | == Position setzen == | ||
So setzt man die Position eines Objektes: | So setzt man die Position eines Objektes: | ||
<php><?php | <source lang="php"><?php | ||
$readclient = new SoapClient('http://gov | $readclient = new SoapClient('http://gov.genealogy.net/services/SimpleService?wsdl'); | ||
$writeclient = new SoapClient('http://gov | $writeclient = new SoapClient('http://gov.genealogy.net/services/ChangeService?wsdl'); | ||
$place =$readclient->getObject('SCHERGJO54EJ'); | $place =$readclient->getObject('SCHERGJO54EJ'); | ||
Zeile 23: | Zeile 23: | ||
$writeclient->saveObject($place,'5000','5000'); | $writeclient->saveObject($place,'5000','5000'); | ||
?></ | ?></source> | ||
== GOV-Kennung prüfen == | == GOV-Kennung prüfen == | ||
Dieses Skript prüft, ob eine gegebene GOV-Kennung gültig ist: | Dieses Skript prüft, ob eine gegebene GOV-Kennung gültig ist: | ||
<php><?php | <source lang="php"><?php | ||
$id = 'SCHERGJO54EJ'; | $id = 'SCHERGJO54EJ'; | ||
Zeile 36: | Zeile 36: | ||
if( $id == $checkedId ) { | if( $id == $checkedId ) { | ||
echo "$id is valid.\n"; | echo "$id is valid.\n"; | ||
} else if( $ | } else if( $checkedId == '' ) { | ||
echo "$id is invalid.\n"; | echo "$id is invalid.\n"; | ||
} else { | } else { | ||
echo "$id has been replaced with $checkedId.\n"; | echo "$id has been replaced with $checkedId.\n"; | ||
} | } | ||
?></ | ?></source> | ||
== Alle Gemeinden und Städte eines Kreises ausgeben == | == Alle Gemeinden und Städte eines Kreises ausgeben == | ||
<php><?php | <source lang="php"><?php | ||
$county = 'adm_131058'; // Rendsburg-Eckernförde (Schleswig-Holstein) | $county = 'adm_131058'; // Rendsburg-Eckernförde (Schleswig-Holstein) | ||
$today = 2454665; // Julianisches Datum | $today = 2454665; // Julianisches Datum | ||
$client = new SoapClient('http://gov | $client = new SoapClient('http://gov.genealogy.net/services/SimpleService?wsdl'); | ||
// 18 = Gemeinde, 95 = kreisfreie Stadt, 150 = Stadt, 145 = Markt | // 18 = Gemeinde, 95 = kreisfreie Stadt, 150 = Stadt, 145 = Markt | ||
$list = $client-> | $list = $client->searchDescendantsByTypeAtDate($county,'18,95,150,145',$today); | ||
$countyname = $client->getNameAtDate($county, $today,'deu'); | $countyname = $client->getNameAtDate($county, $today,'deu'); | ||
Zeile 67: | Zeile 67: | ||
} | } | ||
?></ | ?></source> | ||
Optimierte Version, die den passenden Namen lokal bestimmt und so nur einen Bruchteil der Zeit des obigen Skripts benötigt. Dazu werden die PHP-Klassen [[../PHP/GovTools.php|GovTools.php]] und [[../PHP/GovTimespan.php|GovTimespan.php]] benötigt. | |||
<source lang="php"><?php | |||
require_once('GovTools.php'); | |||
$county = 'adm_131058'; // Rendsburg-Eckernförde (Schleswig-Holstein) | |||
$today = unixtojd(); // Julianisches Datum | |||
$client = new SoapClient('http://gov.genealogy.net/services/ComplexService?wsdl'); | |||
// 18 = Gemeinde, 95 = kreisfreie Stadt, 150 = Stadt, 145 = Markt | |||
$list = $client->searchDescendantsByTypeAtDate($county,'18,95,150,145',$today); | |||
$countyname = $client->getNameAtDate($county, $today,'deu'); | |||
; | echo "== Gemeinden und Städte in $countyname == \n"; | ||
$names = array(); | |||
foreach($list->object as $place) { | |||
$names[$place->id] = GovTools::getName( $place, $today, 'deu' ); | |||
} | |||
asort ($names); | |||
foreach ($names as $id => $name) { | |||
echo "* [[$id|$name]]\n"; | |||
} | |||
</ | ?></source> | ||
Es werden maximal 500 Objekte ausgegeben. | |||
== Hinweise == | == Hinweise == | ||
Auf Objektnamen mit Minuszeichen kann folgendermaßen zugegriffen werden: | Auf Objektnamen mit Minuszeichen kann folgendermaßen zugegriffen werden: | ||
<php>$place->{'postal-code'}</ | <source lang="php">$place->{'postal-code'}</source> | ||
[[Kategorie:GOV-Intern]] | [[Kategorie:GOV-Intern]] |
Aktuelle Version vom 19. Dezember 2010, 15:22 Uhr
Position ausgeben[Bearbeiten]
Dieses Skript gibt den (ersten) Namen und die Position des Ortes aus:
<?php
$readclient = new SoapClient('http://gov.genealogy.net/services/SimpleService?wsdl');
$place =$readclient->getObject('SCHERGJO54EJ');
$name = $place->name->value;
$latitude = $place->position->lat;
$longitude = $place->position->lon;
echo $name ." liegt bei ".$longitude."°O ".$latitude."°N.\n";
?>
Position setzen[Bearbeiten]
So setzt man die Position eines Objektes:
<?php
$readclient = new SoapClient('http://gov.genealogy.net/services/SimpleService?wsdl');
$writeclient = new SoapClient('http://gov.genealogy.net/services/ChangeService?wsdl');
$place =$readclient->getObject('SCHERGJO54EJ');
$place->position->lat=54.3936;
$place->position->lon=10.3707;
$writeclient->saveObject($place,'5000','5000');
?>
GOV-Kennung prüfen[Bearbeiten]
Dieses Skript prüft, ob eine gegebene GOV-Kennung gültig ist:
<?php
$id = 'SCHERGJO54EJ';
$readclient = new SoapClient('http://gov.genealogy.net/services/SimpleService?wsdl');
$checkedId =$readclient->checkObjectId($id);
if( $id == $checkedId ) {
echo "$id is valid.\n";
} else if( $checkedId == '' ) {
echo "$id is invalid.\n";
} else {
echo "$id has been replaced with $checkedId.\n";
}
?>
Alle Gemeinden und Städte eines Kreises ausgeben[Bearbeiten]
<?php
$county = 'adm_131058'; // Rendsburg-Eckernförde (Schleswig-Holstein)
$today = 2454665; // Julianisches Datum
$client = new SoapClient('http://gov.genealogy.net/services/SimpleService?wsdl');
// 18 = Gemeinde, 95 = kreisfreie Stadt, 150 = Stadt, 145 = Markt
$list = $client->searchDescendantsByTypeAtDate($county,'18,95,150,145',$today);
$countyname = $client->getNameAtDate($county, $today,'deu');
echo "== Gemeinden und Städte in $countyname == \n";
$names = array();
foreach( $list->item as $id ) {
$names[$id] = $client->getNameAtDate($id, $today,'deu');
}
asort ($names);
foreach ($names as $id => $name) {
echo "* [[$id|$name]]\n";
}
?>
Optimierte Version, die den passenden Namen lokal bestimmt und so nur einen Bruchteil der Zeit des obigen Skripts benötigt. Dazu werden die PHP-Klassen [[../PHP/GovTools.php|GovTools.php]] und [[../PHP/GovTimespan.php|GovTimespan.php]] benötigt.
<?php
require_once('GovTools.php');
$county = 'adm_131058'; // Rendsburg-Eckernförde (Schleswig-Holstein)
$today = unixtojd(); // Julianisches Datum
$client = new SoapClient('http://gov.genealogy.net/services/ComplexService?wsdl');
// 18 = Gemeinde, 95 = kreisfreie Stadt, 150 = Stadt, 145 = Markt
$list = $client->searchDescendantsByTypeAtDate($county,'18,95,150,145',$today);
$countyname = $client->getNameAtDate($county, $today,'deu');
echo "== Gemeinden und Städte in $countyname == \n";
$names = array();
foreach($list->object as $place) {
$names[$place->id] = GovTools::getName( $place, $today, 'deu' );
}
asort ($names);
foreach ($names as $id => $name) {
echo "* [[$id|$name]]\n";
}
?>
Es werden maximal 500 Objekte ausgegeben.
Hinweise[Bearbeiten]
Auf Objektnamen mit Minuszeichen kann folgendermaßen zugegriffen werden:
$place->{'postal-code'}