GOV/Webservice/PHP: Unterschied zwischen den Versionen

aus wiki, dem genealogischen Lexikon zum Mitmachen.
Zur Navigation springen Zur Suche springen
(Alle Gemeinden und Städte eines Kreises ausgeben)
("gov-test" durch "gov" ersetzt)
 
(8 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-test.genealogy.net/services/SimpleService?wsdl');
$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";
?></php>
?></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-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');


Zeile 23: Zeile 23:


$writeclient->saveObject($place,'5000','5000');
$writeclient->saveObject($place,'5000','5000');
?></php>
?></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( $id == '' ) {
} 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";
}
}
?></php>
?></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-test.genealogy.net/services/SimpleService?wsdl');
$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
Zeile 67: Zeile 67:
}
}


?></php>
?></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'}</php>
<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'}