GOV/Webservice/PHP: Unterschied zwischen den Versionen

aus wiki, dem genealogischen Lexikon zum Mitmachen.
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
("gov-test" durch "gov" ersetzt)
 
(13 dazwischenliegende Versionen von 4 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
<source lang="php"><?php
$readclient = new SoapClient('http://gov-test.genealogy.net/services/SimpleService?wsdl');
$readclient = new SoapClient('http://gov.genealogy.net/services/SimpleService?wsdl');
$place =$readclient->getObject('SCHERGJO54EJ');
$place =$readclient->getObject('SCHERGJO54EJ');
 
$name = $place->name->value;
$name = $place->name->value;
$latitude = $place->position->lat;
$latitude = $place->position->lat;
$longitude = $place->position->lon;
$longitude = $place->position->lon;
 
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
<source lang="php"><?php
$readclient = new SoapClient('http://gov-test.genealogy.net/services/SimpleService?wsdl');
$readclient = new SoapClient('http://gov.genealogy.net/services/SimpleService?wsdl');
$writeclient = new SoapClient('http://gov-test.genealogy.net/services/ChangeService?wsdl');
$writeclient = new SoapClient('http://gov.genealogy.net/services/ChangeService?wsdl');
$place =$readclient->getObject('SCHERGJO54EJ');
$place =$readclient->getObject('SCHERGJO54EJ');
 
$place->position->lat=54.3936;
$place->position->lat=54.3936;
$place->position->lon=10.3707;
$place->position->lon=10.3707;
 
$writeclient->saveObject($place,'5000','5000');
$writeclient->saveObject($place,'5000','5000');
  ?>
?></source>
 
 
== GOV-Kennung prüfen ==
Dieses Skript prüft, ob eine gegebene GOV-Kennung gültig ist:
<source lang="php"><?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";
}
?></source>
 
== Alle Gemeinden und Städte eines Kreises ausgeben ==
<source lang="php"><?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";
}
 
?></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 ==
Auf Objektnamen mit Minuszeichen kann folgendermaßen zugegriffen werden:
<source lang="php">$place->{'postal-code'}</source>
 
[[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'}