Batch-Job anlegen / Datenimport
Batch Job anlegen
Zum Anlegen eines Batch-Jobs werden zuerst die zu verarbeitenden Daten hochgeladen.
Dazu schickt man ein POST-Request mit dem enctype "multipart/form-data" an folgende Adresse:
https://maps1.locr.com/batch-processing/job_v2.php?action=init
Die CSV-Daten müssen dabei als Datei in den POST-Parametern "customer" bzw. "shop" hochgeladen werden. Alle für diesen Batch-Job benötigten Adressdaten, müssen beim Anlegen des Jobs hochgeladen werden!
HTML-Formular Beispiel:
<form action="" method="post" target="Datenimport">
<input name="action" type="text" value="init">
<input name="name" type="text" value="optional">
<input name="customer_header" type="text" value="true">
<input name="shop_header" type="text" value="true">
<input name="configuration" type="file">
<input name="customer" type="file">
<input name="shop" type="file">
<input name="map_type" type="text" value="navimap_with_one_route">
</form>
Benennung eines Batch-Jobs
Beim Anlegen eine Batch-Jobs wird eine interne Request-Id erzeugt, mit das System arbeitet. Jeder Batch-Job kann über diese Request-Id angesprochen werden.
?requestId=<1234567890123456789012345>
Es kann aber auch zusätzlich ein selbst definierte Name für eine Batch-Job angegeben werden, dieser muss EINDEUTIG über alle Batch-Jobs eines Benutzers sein!
Wird der Parameter "name" mit angegeben, so kann man nach erfolgreicher Batch-Job Anlegung mit diesem Namen weiterarbeiten.
<input name="name" type="text" value="optional">
Definition der Daten
Wenn in der 1. Zeile der CSV-Datei eine Kopfzeile für Feldbezeichner Parametern angegeben werden. (false = default)
customer_header=true
shop_header=true
Entsprechen diese Feldnamen, den von locr vorgegeben Namen "id, country, city, postal, street, house", so werden die Felder automatisch zugeordnet.
Sind in der ersten Zeile der Adressdatei keine Feldbezeichner oder entsprechen diese nicht der locr Vorgabe, so müssen die Felder separat, in der richtigen Reihenfolge und durch Komma getrennt, zugeordnet werden! Dies geschieht durch die Parameter
customer_columns=""
shop_columns=""
HTML-Formular Beispiel:
<form action="" method="post" target="Datenimport">
<input name="action" type="text" value="init">
<input name="customer_header" type="text" value="false">
<input name="customer_columns" type="text" value="id,county,city,postal,street,house">
<input name="shop_header" type="text" value="false">
<input name="shop_columns" type="text" value="id,,county,,city,,postal,street,house">
<textarea name="customer">...</textarea>
<textarea name="shop">...</textarea>
<input name="map_type" type="text" value="navimap_with_one_route">
</form>
Erläuterung:
<input name="shop_columns" type="text" value="id,,county,,city,,postal,street,house">
Feld1 = id
Feld2 = -
Feld3 = country
Feld4 = -
Feld5 = city
Feld6 = -
Feld7 = postal
Feld8 = street
Feld9 = house
Angabe des Karten-Typs
Es gibt 2 Arten von Karten die LOCALmaps und die NAVImaps, diese können ein oder max. 5 Ziele haben:
<input name="map_type" type="text" value="navimaps">
Parameter:
localmaps
navimaps
localmaps_with_locations
Vorgabe des Landes
Wenn die gesamten Adressen einer Liste aus einem Land kommen, kann man dies mit den folgenden Parametern für die Listen festlegen:
default_customer_country
default_shop_country
<input name="default_customer_country" type="text" value="DE">
<input name="default_shop_country" type="text" value="DE">
Länder müssen nach der Norm ISO 3166 ALPHA-2 oder ISO 3166 ALPHA 3 angegeben werden.
http://de.wikipedia.org/wiki/ISO-3166-1-Kodierliste
Mindestvorgaben für GEO-Kodierung
Um eine GEO-Kodierung zu ermöglichen, müssen wenigstens die Felder für das Land und Stadt angegeben werden, wobei diese minimal Angaben zu ungenauen Ergebnissen führen werden.
Um eine möglichst genaue Positionierung zu erhalten, sollten alle 5 Felder LAND,STADT,PLZ,STRASSE,HAUSNUMMER angegeben werden!
Adressen mit vorhandener GEO-Kodierung
Wenn die Adressen schon GEO-kodiert sind, also für alle Adressen die Werte für Latitude/Longitude in einer Liste vorhanden sind, kann dies mit den Parametern
latitude
longitude
in den Variablen customer_columns, shop_colums definiert werden.
<input name="customer_columns" type="text" value="id,latitude,longitude">
<input name="shop_columns" type="text" value="id,,county,,city,,postal,street,house,latitude,longitude">
Rückgabe bei erfolgreichem Import
Wenn der Import funktioniert hat, so bekommt man eine XML mit der Anzahl der Datensätze und eine RequestId zurück, mit der weitergearbeitet wird.
Beispielrückgabe beim Import:
<?xml version="1.0" encoding="utf-8"?>
<BatchProcessing>
<Response>
<MetaInfo>
<RequestId>4fec2eb23a16880b77000000</RequestId>
<Name>jobname</Name>
<Created>2012-06-01 12:00:00</Created>
</MetaInfo>
<Status>submitted</Status>
<Geocoding>
<Customers>
<TotalCount>1</TotalCount>
<ProcessedCount>0</ProcessedCount>
<ValidCount>0</ValidCount>
<InvalidCount>0</InvalidCount>
</Customers>
<Shops>
<TotalCount>1</TotalCount>
<ProcessedCount>0</ProcessedCount>
<ValidCount>0</ValidCount>
<InvalidCount>0</InvalidCount>
</Shops>
</Geocoding>
<Routing>
<TotalCount>0</TotalCount>
<ProcessedCount>0</ProcessedCount>
<ValidCount>0</ValidCount>
<InvalidCount>0</InvalidCount>
</Routing>
<Maps>
<TotalCount>1</TotalCount>
<ProcessedCount>0</ProcessedCount>
<ValidCount>0</ValidCount>
<Invalid>0</Invalid>
</Maps>
</Response>
</BatchProcessing>
Rückgabe bei fehlerhaften Import
<?xml version="1.0" encoding="utf-8"?>
<Error type="PermissionError" subtype="ContractViolated">
<Details>permanently prohibited</Details>
</Error>