Location Information Service (servizio informazioni sulla posizione)
Il servizio di localizzazione fornisce varie località/Location in risposta a una richiesta. I principali dati di input sono
Der Location Service liefert verschiedene Location als Antwort auf eine Anfrage. Wesentliche Inputdaten sind:
- Input testuale
- Tipi di oggetti consentiti
- Restrizioni geografiche/ ponderazione
- Altre limitazioni
L’output è un elenco di oggetti con nome, posizione geografica, attributi e probabilità.
Se la LocationInformationRequest viene utilizzata senza LocationName, ma con GeoPosition, Circle o Rectangle, è supportato solo il type=”stop”. Inoltre GeoPosition con type=”address” restituisce esattamente un indirizzo con HausnummerRequest (NumeroCivicoRequest).
API-Explorer
È possibile provare le proprie richieste – link diretto all’API Explorer.
Request
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<?xml version="1.0" encoding="UTF-8"?> <OJP xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.siri.org.uk/siri" version="1.0" xmlns:ojp="http://www.vdv.de/ojp" xsi:schemaLocation="http://www.siri.org.uk/siri ../ojp-xsd-v1.0/OJP.xsd"> <OJPRequest> <ServiceRequest> <RequestTimestamp>2020-01-09T08:00:00Z</RequestTimestamp> <RequestorRef>IRMA</RequestorRef> <ojp:OJPLocationInformationRequest> <RequestTimestamp>2020-01-09T08:00:00Z</RequestTimestamp> <MessageIdentifier>4711</MessageIdentifier> <ojp:InitialInput> <ojp:LocationName>Bern</ojp:LocationName> </ojp:InitialInput> <ojp:Restrictions> <ojp:Type>stop</ojp:Type> <ojp:IncludePtModes>true</ojp:IncludePtModes> </ojp:Restrictions> </ojp:OJPLocationInformationRequest> </ServiceRequest> </OJPRequest> </OJP> |
Elemento | Cardinalità | Descrizione | Esempio | ||
RequestTimestamp | 1:1 | Timestamp (data e ora) della richiesta. Preferibilmente come Zulu Time |
|
||
MessageIdentifier | 0:1 | Cancella l’id del messaggio. Saremmo lieti se questi fossero strettamente monotonici. |
|
||
ojp:InitialInput/ojp:LocationName | 0:1 | Il nome dell’oggetto. Se non viene specificato nulla, la ricerca si basa sugli altri criteri.
Se sono comuni diverse denominazioni, è possibile cercarle tutte. Ad esempio, funzionano sia la ricerca di “Basilea” che quella di “Bâle CFF”. Se le fermate sono indicate in diverse lingue, funziona anche se si cerca solo in una lingua. Ad esempio, “Biel/Bienne” si trova sia con la richiesta “Biel” che con “Bienne”. |
|
||
ojp:InitialInput/ojp:GeoPosition | 0:1 | La posizione ricercata con le geocoordinate (WGS84) |
|
||
ojp:InitialInput/GeoRestriction/Circle | 0:1 | Limitazione della ricerca a un determinato raggio. Ad esempio, selezionando correttamente il type/tipo, è possibile specificare tutte le fermate entro un raggio. Coordinate WGS84. |
|
||
ojp:InitialInput/GeoRestriction/Rectangle | 0:1 | Limitazione della ricerca a un rettangolo specifico. Coordinate WGS84. |
|
||
ojp:/ojp:PlaceRef | 0:1 | Riferimento a un luogo. | vedi tabella separata | ||
ojp:Restrictions | 0:1 | Le restrizioni da utilizzare | vedi tabella separata |
Restrictions (limitazioni)
Elemento | Cardinalità | Descrizione | Esempio | ||
ojp:Type | 0:* | Tipo, cosa si sta cercando in termini di oggetti da restituire.
Esistono i seguenti tipi:
I principali utilizzi sono stop e coord. I poi diventeranno sempre più importanti nel tempo (soprattutto per i parcheggi e i condivisori). I veicoli in condivisione (e-scooter, biciclette, automobili) e le stazioni di ricarica possono ora essere richiamati come POI (vedere ojp:PointOfInterestFilter di seguito). Per l’indirizzo (address), il nome esatto dell’ubicazione (LocationName) deve essere prima determinato utilizzando l’input generale. Poi si deve cercare esattamente con questo nome e con il tipo “address”. Solo allora verrà restituito il codice dell’indirizzo. Tuttavia, si tratta di un caso particolare che normalmente non dovrebbe essere utilizzato. Né il codice dell’indirizzo né TopographicPlaceRef hanno alcun significato al di fuori delle ricerche in OJP. |
|
||
ojp:Usage | 0:* | Specifica per cosa viene utilizzato il luogo (Place).
Sono disponibili i seguenti valori:
La funzione non è supportata. |
n/a | ||
ojp:PtModes | 0:1 | Contiene un elemento booleano di esclusione (Exclude). Se vero (true), le modalità sono escluse, altrimenti sono incluse. La gestione è descritta in una sezione separata.
Vedere anche la sezione PtMode. |
|
||
ojp:OperatorFilter | 0:1 | Un filtro dopo l’operatore.
La funzione non è supportata. |
n/a | ||
ojp:TopographicPlaceRef | 0:1 | Utilizzato per filtrare in base alla posizione. Se viene impostato almeno un riferimento, vengono ricercati solo gli oggetti all’interno delle posizioni rilevanti. |
|
||
ojp:PointOfInterestFilter | 0:1 | Novità (da agosto 2022): i veicoli in condivisione (e-scooter, biciclette, auto) e le stazioni di ricarica possono essere richiamati entro un raggio o un rettangolo. Struttura come mostrato nell’esempio a destra:
Attenzione: la query deve essere combinata con una GeoRestriction (Circle o Rectangle) e non con LocationName, GeoPosition o PlaceRef. |
|
||
ojp:Language | 0:1 | Lingua desiderata per i valori di ritorno.
Non è stato implementato nella versione 1.0, ma è previsto per una versione successiva. |
n/a | ||
ojp: NumberOfResults | 0:1 | Il numero di risultati.
Importante: stringhe di caratteri come “St. Gallen Haggen” e “St. Gallen, Haggen” sono equivalenti per la ricerca. Se un gruppo di risultati viene tagliato con la stessa probabilità (>0,5), il server restituisce tutti i risultati. Ciò significa che il numero effettivo di risultati può differire dal risultato desiderato. Il motivo è che con NumberOfResults=1 e l’input “St. Gallen, Haggen” effettivamente 2 fermate devono essere restituite: “St. Gallen, Haggen” e “St. Gallen Haggen”. |
|
||
IncludePtModes | 0:1 | Indica al servizio di restituire le modalità disponibili per ogni fermata. L’impostazione predefinita (Default) è false. |
|
PlaceRef
Elemento | Cardinalità | Descrizione | Esempio | ||
ojp: StopPointRef | 0:1 | Riferimento a ScheduledStopPoint (un punto di arresto programmato).
Es wird davon abgeraten, diese zu verwenden, da es unklar ist, welche id notwendig ist. Non è consigliabile utilizzarli, poiché non è chiaro quale id sia necessario. Nota: Sia i numeri Didok che gli sloid possono essere trasmessi in Request e Response. Vedi |
|
||
ojp:StopPlaceRef | 0:1 | Riferimento a una fermata . In base al numero DiDok. L’uso di StopPlaces porta a risultati di ricerca molto veloci. |
|
||
ojp:GeoPosition | 0:1 | Geoposizione come longitudine/latitudine |
|
||
ojp:PlaceRef/ojp:LocationName | 0:1 | Verrà ignorato | n/a |
Dall’inizio del 2024, in OJP si è passati ai dati incrementali. Dove la merce viene consegnata con un forte aumento, viene consegnata allo stesso modo. I dati ascendenti vengono sempre eseguiti con uno SLOID e non più con un numero Didok. Tuttavia, sono possibili risposte miste e le modifiche per operatore/linee possono essere effettuate in qualsiasi momento.
In passato:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<ojp:ThisCall> <ojp:CallAtStop> <siri:StopPointRef>8501300</siri:StopPointRef> <ojp:StopPointName> <ojp:Text xml:lang="de">Montreux</ojp:Text> </ojp:StopPointName> <ojp:PlannedQuay> <ojp:Text xml:lang="de">6</ojp:Text> </ojp:PlannedQuay> <ojp:ServiceArrival> <ojp:TimetabledTime>2024-02-12T07:44:00Z</ojp:TimetabledTime> <ojp:EstimatedTime>2024-02-12T07:44:00Z</ojp:EstimatedTime> </ojp:ServiceArrival> <ojp:Order>15</ojp:Order> </ojp:CallAtStop> </ojp:ThisCall> |
Ora:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<ojp:ThisCall> <ojp:CallAtStop> <siri:StopPointRef>ch:1:sloid:1300:2:3</siri:StopPointRef> <ojp:StopPointName> <ojp:Text xml:lang="de">Montreux</ojp:Text> </ojp:StopPointName> <ojp:PlannedQuay> <ojp:Text xml:lang="de">3</ojp:Text> </ojp:PlannedQuay> <ojp:ServiceArrival> <ojp:TimetabledTime>2024-02-12T07:41:00Z</ojp:TimetabledTime> <ojp:EstimatedTime>2024-02-12T07:41:00Z</ojp:EstimatedTime> </ojp:ServiceArrival> <ojp:Order>7</ojp:Order> </ojp:CallAtStop> </ojp:ThisCall> |
In passato:
1 2 3 4 5 6 7 8 |
<ojp:OriginStopPointRef>8501394</ojp:OriginStopPointRef> <ojp:OriginText> <ojp:Text xml:lang="de">Château-d'Oex</ojp:Text> </ojp:OriginText> <ojp:DestinationStopPointRef>8501300</ojp:DestinationStopPointRef> <ojp:DestinationText> <ojp:Text xml:lang="de">Montreux</ojp:Text> </ojp:DestinationText> |
Ora:
1 2 3 4 5 6 7 8 |
<ojp:OriginStopPointRef>ch:1:sloid:1026:1:2</ojp:OriginStopPointRef> <ojp:OriginText> <ojp:Text xml:lang="de">Genève-Aéroport</ojp:Text> </ojp:OriginText> <ojp:DestinationStopPointRef>ch:1:sloid:1609:3:7</ojp:DestinationStopPointRef> <ojp:DestinationText> <ojp:Text xml:lang="de">Brig</ojp:Text> </ojp:DestinationText> |
Ciò consente anche di ottenere percorsi migliori.
Le conversioni sono le seguenti:
- Metodo di conversione (se si lavora internamente con DiDok) per sloid -> didok:
- Se sloid è presente nella stringa,
- Scegliere l’elemento corretto, convertirlo in numero e aggiungere 8.500.000 (ad esempio, ch:1:sloid:1026:1:2 -> 8501026))
Si tratta ovviamente di un hack. In realtà, si dovrebbe utilizzare una tabella di mappatura. Tuttavia, presumiamo che gli ultimi numeri Didok scompariranno per la Svizzera prima che questo diventi un problema.
- Didok -> sloid funziona in modo simile. Tuttavia, ciò può comportare problemi alle fermate estere:
- In pratica convertiamo solo 85xxxxx, ad eccezione del traffico locale estero, che abbiamo dovuto registrare nei nostri sistemi (8500700 -> ch:1:sloid:700).
- Traffico locale all’estero: 11xxxxx, 12xxxxx, 13xxxxx, 14xxxxx => ch:1:sloid:<didok> (es. “Annemasse, Adrien Ligué”: 1401664 à ch:1:sloid:1401664)
PTMode
I PTModes sono le modalità di traffico.
A livello di PTMode, ci sono i seguenti valori (ce ne sono altri, ma non li usiamo, non tutti quelli elencati di seguito sono utilizzati al momento):
- unknown
- rail
- coach
- suburbanRail
- urbanRail
- metro
- underground
- bus
- trolleyBus
- tram
- water
- air
- telecabin
- funicular
- taxi
- selfDrive
- all
Le SubModes sono:
AirSubmode
- Attualmente non utilizzato
BusSubmode
- regionalBus
- expressBus
- localBus
- postBus
- sightseeingbus
- shuttleBus
- railReplacementBus
- demandAndResponseBus
CoachSubmode
- internationalCoachService
- nationalCoachService
- regionalCoachService
- touristCoachService
FunicularSubmode
- funicular
MetroSubmode
- urbanRailway
- metro
TramSubmode
- cityTram
- regionalTram
- localTramService
- sightseeingTram
TelecabinSubmode
- chairLift
- dragLift
- smallTelecabin
- lift
- telecabin
- cableCar
RailSubmode
- hightSpeedRailService
- longDistanceTrain
- interRegionalRailService
- carTransportRailService
- sleeperRailService
- regionalRail
- touristRailway
- railShuttle
- suburbanRailway
- replacementRailService
- local
- interbational (sì, in realtà con la b. Prima o poi verrà cambiata)
WaterSubmode
- internationalCarFerryService
- nationalCarFerryService
- regionalCarFerryService
- localCarFerryService
- internationalPassengerFerry
- regionalPassengerFerry
- localPassengerFerry
- postBoat
- trainFerry
Response
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
<?xml version="1.0" encoding="UTF-8"?> <siri:OJP xmlns:siri="http://www.siri.org.uk/siri" xmlns:ojp="http://www.vdv.de/ojp" version="1.0"> <siri:OJPResponse> <siri:ServiceDelivery> <siri:ResponseTimestamp>2020-03-09T09:12:49Z</siri:ResponseTimestamp> <siri:ProducerRef>OJPCH_test</siri:ProducerRef> <siri:Status>true</siri:Status> <ojp:OJPLocationInformationDelivery> <siri:ResponseTimestamp>2020-03-09T09:12:49Z</siri:ResponseTimestamp> <siri:RequestMessageRef>4711</siri:RequestMessageRef> <siri:Status>true</siri:Status> <ojp:CalcTime>53</ojp:CalcTime> <ojp:Location> <ojp:Location> <ojp:StopPlace> <ojp:StopPlaceRef>8571260</ojp:StopPlaceRef> <ojp:StopPlaceName> <ojp:Text>Aarberg, Bernfeld</ojp:Text> </ojp:StopPlaceName> <ojp:TopographicPlaceRef>23006301:1</ojp:TopographicPlaceRef> </ojp:StopPlace> <ojp:LocationName> <ojp:Text xml:lang="de">Aarberg, Bernfeld (Aarberg)</ojp:Text> </ojp:LocationName> <ojp:GeoPosition> <siri:Longitude>7.28473</siri:Longitude> <siri:Latitude>47.04372</siri:Latitude> </ojp:GeoPosition> </ojp:Location> <ojp:Complete>true</ojp:Complete> <ojp:Probability>0.922999978</ojp:Probability> <ojp:Mode> <ojp:PtMode>bus</ojp:PtMode> <siri:BusSubmode>localBusService</siri:BusSubmode> </ojp:Mode> </ojp:Location> <!---- und so weiter und so weiter --> <ojp:Location> <ojp:Location> <ojp:StopPlace> <ojp:StopPlaceRef>8578094</ojp:StopPlaceRef> <ojp:StopPlaceName> <ojp:Text>Biberist, Bernstrasse</ojp:Text> </ojp:StopPlaceName> <ojp:TopographicPlaceRef>23019513:1</ojp:TopographicPlaceRef> </ojp:StopPlace> <ojp:LocationName> <ojp:Text xml:lang="de">Biberist, Bernstrasse (Biberist)</ojp:Text> </ojp:LocationName> <ojp:GeoPosition> <siri:Longitude>7.55428</siri:Longitude> <siri:Latitude>47.18031</siri:Latitude> </ojp:GeoPosition> </ojp:Location> <ojp:Complete>true</ojp:Complete> <ojp:Probability>0.920000017</ojp:Probability> <ojp:Mode> <ojp:PtMode>bus</ojp:PtMode> <siri:BusSubmode>localBusService</siri:BusSubmode> </ojp:Mode> </ojp:Location> </ojp:OJPLocationInformationDelivery> </siri:ServiceDelivery> </siri:OJPResponse> </siri:OJP> |
La risposta è in un elemento ojp:OJPLocationInformationDelivery
Elemento | Cardinalità | Descrizione | Esempio | ||
siri:ResponseTimestamp | 1:1 | Il timestamp della risposta |
|
||
siri:RequesteMessageRef | 0:1 | Qui si fa riferimento al messaggio che è stato inviato. |
|
||
siri:Status | 1:1 | Lo stato dell’articolo è vero, la risposta è stata elaborata. |
|
||
ojp:CalcTime | 1:1 | Il tempo di calcolo in millisecondi |
|
||
ojp:Location | 1:1 | Inserire le singole voci di ojp:Location-risposte | |||
ojp:Location/ojp:Location | 1:1 | Le risposte individuali. È relativamente poco gradevole che due elementi gerarchicamente non diversi siano tutti uguali, ma è proprio così. |
|
||
ojp:Complete | 1:1 | È possibile verificare se la posizione attuale è completa o se è stata modificata. Beim Refinement muss sie nochmals in einem LocationInformationRequest präziser eingegeben werden. |
|
||
ojp:Probability | 1:1 | La eventualità, che prevede che la posizione specifica del destinatario (Location) sia diversa da quella prevista.
Il risultato è stato ottenuto in base alla eventualità (il più importante è quello di oggi). La selezione dei migliori candidati per l’elenco degli hit è determinata dalla corrispondenza del testo in ingresso con l’intero database. La probabilità è determinata in base al numero di trigrammi corrispondenti in cui è possibile suddividere i termini e il resto che non corrisponde. Se c’è una corrispondenza completa, cioè nessun resto, si ha un riscontro diretto e il candidato riceve la massima probabilità (Probability) di 1. Se c’è ancora un resto, vengono sottratti punti. Le risposte pertinenti trovate in questo modo possono essere influenzate da vari criteri di valutazione, qualità e ordine. I risultati possono essere modificati in base alla regione (codice del comune), al tipo (fermata, indirizzo, città, PDI, ecc.), al mezzo di trasporto utilizzato o a un valore di rilevanza. |
|
||
ojp:Mode | 0:* | Le modalità rilevanti per la località |
|
ojp:Location
Una posizione (Location) può essere una delle seguenti:
- StopPoint: una fermata o un binario
- StopPlace: una fermata in senso fisico
- TopographicPlace: un luogo
- PointOfInterest: un POI. Attenzione: al momento non ce ne sono di disponibili.
- Address: un indirizzo
Elemento | Cardinalità | Descrizione | Esempio | ||
ojp:StopPlace | 0:1 | Una sosta in senso fisico |
|
||
ojp:StopPoint | 0:1 | Una fermata o un binario
Al momento non dovrebbe arrivare nessuno. La funzione non è attualmente supportata. |
|||
ojp:TopographicPlace | 0:1 | Un posto |
|
||
ojp:PointOfInterest | 0:1 | UN POI. Attenzione: al momento non ce ne sono di disponibili.
La funzione non è attualmente supportata. |
|||
ojp:Address | 0:1 | Un indirizzo |
|
||
ojp:LocationName | 0:1 | Il nome del luogo |
|
||
ojp:GeoPosition | 0:1 | Le coordinate
L’esempio mostra cosa viene restituito se non sono disponibili coordinate. La precisione è quindi impostata sulla metà della circonferenza del mondo. Naturalmente cerchiamo di evitare questi casi. |
|
ojp:Location/ojp:StopPoint
La funzione non è attualmente supportata.
ojp:Location/ojp:StopPlace
Elemento | Cardinalità | Descrizione | Esempio | ||
ojp:StopPlaceRef | 1:1 | Il riferimento alla fermata dell’autobus. Corrente: numero DiDok |
|
||
ojp:StopPlaceName | 1:1 | Il nome della fermata |
|
||
ojp:TopographicPlaceRef | 1:1 | Il riferimento al luogo. |
|
ojp:Location/ojp:TopographicPlace
Elemento | Cardinalità | Descrizione | Esempio | ||
ojp:TopographicPlaceRef | 1:1 | Il riferimento al luogo. |
|
||
ojp:TopographicPlaceName | 1:1 | Il nome del luogo. |
|