#AutoTranslate
Descrizione breve
Il Location Service fornisce diverse location in risposta a una richiesta.
Descrizione del funzionamento
I dati di input essenziali sono:
- input testuale
- Tipi di oggetti consentiti
- Restrizioni geografiche/ponderazione
- Ulteriori restrizioni
L’output è un elenco di oggetti con nomi, posizione geografica, attributi e probabilità.
Se si utilizza LocationInformationRequest senza LocationName, ma con GeoPosition, Circle o Rectangle, è supportato solo type=»stop». Inoltre, GeoPosition con type=»address» fornisce esattamente un indirizzo con numero civicoRequest.
Descrizione tecnica
API Explorer
Puoi provare le tue richieste – link diretto all’API Explorer.
Richiesta
<?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 della richiesta. Preferito come Zulu Time |
<RequestTimestamp>2020-01-09T08:00:00Z</RequestTimestamp> |
MessageIdentifier |
0:1 | ID univoco della segnalazione. Saremmo lieti se questi diventassero rigorosamente monotoni all’aumento. |
<MessageIdentifier>4711</MessageIdentifier> |
ojp:InitialInput/ojp:LocationName |
0:1 | Nome dell’oggetto. Se non viene indicato nessuno, si procede alla ricerca in base agli altri criteri.
Dove si usano più denominazioni, è possibile cercarle tutte. È possibile effettuare la ricerca sia per «Basilea» che per «Basilea FFS». Se le fermate sono inserite in più lingue, la funzione funziona anche se la ricerca è in una sola lingua. Ad esempio, «Biel» può essere trovato sia con la richiesta «Biel» che con «Bienne». |
<ojp:InitialInput> <ojp:LocationName>Bern</ojp:LocationName> </ojp:InitialInput> |
ojp:InitialInput/ojp:GeoPosition |
0:1 | La posizione cercata con le geocoordinate (WGS84) |
<ojp:InitialInput> <ojp:GeoPosition> <Longitude>8.5545</Longitude> <Latitude>47.365</Latitude> </ojp:GeoPosition> </ojp:InitialInput> |
ojp:InitialInput/GeoRestriction/Circle |
0:1 | Una restrizione della ricerca a un determinato raggio. Ad esempio, selezionando il tipo corretto, è possibile indicare tutte le fermate in un raggio. Coordinate come WGS84. |
<ojp:GeoRestriction> <ojp:Circle> <ojp:Center> <Longitude>8.5545</Longitude> <Latitude>47.365</Latitude> </ojp:Center> <ojp:Radius>500</ojp:Radius> </ojp:Circle> </ojp:GeoRestriction> |
ojp:InitialInput/GeoRestriction/Rectangle |
0:1 | Una restrizione della ricerca a un determinato rettangolo. Coordinate come WGS84. |
<ojp:InitialInput> <ojp:GeoRestriction> <ojp:Rectangle> <ojp:UpperLeft> <Longitude>8.54</Longitude> <Latitude>47.37</Latitude> </ojp:UpperLeft> <ojp:LowerRight> <Longitude>8.57</Longitude> <Latitude>47.36</Latitude> </ojp:LowerRight> </ojp:Rectangle> </ojp:GeoRestriction> </ojp:InitialInput> |
ojp:PlaceRef |
0:1 | Un riferimento a un posto. | v. tabella a parte |
ojp:Restrictions |
0:1 | Limitazioni da applicare | v. tabella a parte |
Restrizioni
| Elemento | Cardinalità | Descrizione | Esempio |
|---|---|---|---|
ojp:Type |
0:* | Il tipo degli oggetti che devono essere cercati.
Sono disponibili i seguenti tipi:
Gli usi principali sono stop e coordina. I POI diventeranno più importanti con il tempo, come i parcheggi o le stazioni di ricarica. I veicoli in condivisione (monopattino elettrico, biciclette, auto) e le stazioni di ricarica possono ora essere richiamati come POI (v. ojp:PointOfInterestFilter sotto). Per l’adress occorre innanzitutto determinare il LocationName esatto con un inserimento generale. Poi occorre effettuare la ricerca con lo stesso nome e il tipo «address». Solo allora il codice di indirizzo ritorna. Si tratta però di un caso speciale che di norma non dovrebbe essere utilizzato. Né il codice di indirizzo né il TopographicPlaceRef sono rilevanti al di fuori delle ricerche nell’OJP. |
<ojp:Type>stop</ojp:Type> |
ojp:Usage |
0:* | Indica per cosa viene utilizzato il luogo.
Sono disponibili i seguenti valori:
Questa feature non è supportata. |
n.d. |
ojp:PtModes |
0:1 | Contiene un elemento di esclusione booleano. Se true, le modalità vengono escluse, altrimenti incluse. La procedura è descritta in una sezione separata.
Vedere anche il paragrafo relativo a Modalità Pt |
<ojp:PtModes> <ojp:Exclude>true</ojp:Exclude> <ojp:PtMode>bus</ojp:PtMode> <siri:BusSubmode>localBusService</siri:BusSubmode> </ojp:PtModes>
|
ojp:OperatorFilter |
0:1 | Un filtro per operatore.
Questa feature non è supportata. |
n.d. |
ojp:TopographicPlaceRef |
0:1 | Viene usato per filtrare per località. Se è impostato almeno un riferimento, vengono cercati solo oggetti all’interno dei luoghi interessati. |
<ojp:TopographicPlaceRef>23011901:2</ojp:TopographicPlaceRef> |
ojp:PointOfInterestFilter |
0:1 | Ora (da agosto 2022) è possibile utilizzare i veicoli in condivisione (monopattino elettrico, biciclette, auto) e le stazioni di ricarica in un raggio o in un rettangolo.
Struttura come illustrato nell’esempio a destra:
Attenzione: la query deve essere combinata con una GeoRestriction (Circle o Rectangle) e non con LocationName, GeoPosition o PlaceRef. |
<ojp:PointOfInterestFilter>
<ojp:PointOfInterestCategory>
<ojp:OsmTag>
<ojp:Tag>amenity</ojp:Tag>
<ojp:Value>escooter_rental</ojp:Value>
</ojp:OsmTag>
</ojp:PointOfInterestCategory>
</ojp:PointOfInterestFilter>
|
ojp:Language |
0:1 | Lingua desiderata per i valori restituiti.
Non implementato nell’attuale versione 1.0, in programma per una versione successiva |
n.d. |
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 viene intercettato un gruppo di risultati con la stessa probabilità (>0,5), il server restituisce tutti i risultati. Ciò significa che il numero effettivo di risultati può discostarsi dal risultato desiderato. Questo perché per NumberOfResults=1 e inserendo «St. Gallen, Haggen» devono essere restituite due fermate: «St. Gallen, Haggen» e «St. Gallen Haggen». |
<NumberOfResults>10</NumberOfResults> |
IncludePtModes |
0:1 | Comunica al servizio che deve restituire le modalità disponibili per ogni fermata. L’impostazione di default è false. |
<IncludePtModes>true</IncludePtModes> |
PlaceRif
| Elemento | Cardinalità | Descrizione | Esempio |
|---|---|---|---|
ojp:StopPointRef |
0:1 | Riferimento a uno ScheduledStopPoint.
Si sconsiglia l’uso di questi dati, poiché non è chiaro quale id sia necessario. Attenzione: È possibile trasferire sia i numeri DiDok che gli sloid in request e response. Vedi |
<ojp:PlaceRef> |
ojp:StopPlaceRef |
0:1 | Riferimento a una fermata. Sulla base del numero DiDok. L’utilizzo di StopPlace produce risultati di ricerca molto rapidi. |
<ojp:PlaceRef> |
ojp:GeoPosition |
0:1 | Geoposizione come longitudine/latitudine |
<ojp:PlaceRef> <ojp:GeoPosition> <Longitude>8.5545</Longitude> <Latitude>47.365</Latitude> </ojp:GeoPosition> <ojp:LocationName> <ojp:Text>Zürich Kreuzplatz</ojp:Text> </ojp:LocationName> </ojp:PlaceRef> |
ojp:PlaceRef/ojp:LocationName |
0:1 | Vengono ignorati | n.d. |
Dall’inizio del 2024, stiamo passando ai dati specifici delle colonne montanti in OJP. Le consegne con indicazione precisa delle colonne montanti vengono effettuate nello stesso modo. I dati specifici delle colonne montanti sono sempre elaborati con una SLOID e non più con un numero DiDok. Tuttavia, sono possibili risposte miste e sono sempre possibili modifiche per ogni gestore/linea.
Precedente:
<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>
Novità:
<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>
Prima
<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>
Novità:
<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>
In questo modo si ottengono anche itinerari migliori.
Le trasformazioni avvengono come segue:
- Metodologia di conversione (se si lavora internamente con DiDok) per sloid -> didok:
- Se c’è sloid nella stringa,
- Scegliere l’elemento giusto, convertirlo in numero e aggiungere 8500 000 (es. ch:1:sloid:1026:1:2 -> 8501026)
Ovviamente si tratta di un hack. In realtà si dovrebbe utilizzare una tabella di mappatura. Partiamo però dal presupposto che l’ultimo numero DiDok scompaia per scherzo, prima che questo diventi un problema.
- DIDOK -> SLOID funziona in modo simile. Tuttavia, le fermate estere possono causare problemi:
- Fondamentalmente convertire solo 85xxxxx, ad eccezione del traffico locale estero, che abbiamo dovuto registrare anche nei nostri sistemi (8500700 -> ch:1:sloid:700)
- Traffico locale estero: 11xxxxx, 12xxxxx, 13xxxxx, 14xxxxx => ch:1:sloid:<didok> (ad es. «Annemasse, Adrien Ligué»: 1401664 à ch:1:sloid:1401664)
Modalità PT
I PTMode sono le modalità del traffico.
A livello di PTMode, ci sono i seguenti valori (ce ne sono di più, ma non ci sono, anche quelli di seguito, non sono tutti utilizzati al momento):
- sconosciuto
- rail
- coach
- suburbanRail
- UrbanRail
- metro
- sotterraneo
- autobus
- filobus
- tram
- acqua
- aria
- telecabin
- funicolare
- taxi
- self-drive
- tutti
Le SubModes sono:
AirSubmode
- Attualmente non utilizzato
Sottomodalità autobus
- Autobus regionale
- Autobus espresso
- Bus locale
- Autopostale
- bus turistico
- bus-navetta
- railReplacementBus
- demandAndResponseBus
Sottomodalità coach
- internazionaleCoach Service
- nazionaleCoach Service
- regionaleCoach Service
- touristCoachService
Submode Funicular
- funicolare
Sottomodalità Metro
- UrbanRailway
- metro
Sottomodello tram
- CityTram
- Tram regionale
- LocalTram Service
- sightseeingtram
TelecabinSubmodo
- sedia elevatore
- draglift
- smallTelecabin
- ascensore
- telecabin
- Funivia
RailSubmode
- hightSpeedRailService
- longDistanceTrain
- Rail Service interregionale
- CarTransportRail Service
- sleeperRailService
- Regional-Rail
- touristRailway
- rail shuttle
- suburbanRailway
- replacementRail Service
- locale
- interbazionale (sì, in realtà con b. Sarà cambiato in un secondo momento)
WaterSubmode
- internazionaleCarFerryService
- nazionaleCar FerryService
- RegionaleCar Ferry Service
- localCarFerryService
- traffico internazionalePassenger Ferry
- regionalePassenger Ferry
- localPassenger Ferry
- postboat
- train traghetto
Risposta
<?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>ch:1:sloid:71260</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>ch:1:sloid:78094</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 è contenuta in un elemento ojp:OJPLocationInformationDelivery
| Elemento | Cardinalità | Descrizione | Esempio |
|---|---|---|---|
siri:ResponseTimestamp |
1:1 | Il timestamp della risposta |
<siri:ResponseTimestamp>2020-04-03T14:47:59Z</siri:ResponseTimestamp> |
siri:RequesteMessageRef |
0:1 | Qui viene fatto riferimento al messaggio richiesto |
<siri:RequestMessageRef>756</siri:RequestMessageRef> |
siri:Status |
1:1 | Lo stato della risposta. true significa che la richiesta è stata elaborata. |
<siri:Status>true</siri:Status> |
ojp:CalcTime |
1:1 | Il tempo di calcolo in millisecondi |
<ojp:CalcTime>939</ojp:CalcTime> |
ojp:Location |
1:1 | Contiene le singole risposte ojp:Location | |
ojp:Location/ojp:Location |
1:1 | Le singole risposte. È piuttosto spiacevole che due elementi gerarchicamente diversi abbiano lo stesso nome, ma ora è così. |
<ojp:Location> |
ojp:Complete |
1:1 | Indica se la location attuale è completa o se deve essere ancora perfezionata. Durante il refinement, deve essere inserita di nuovo con maggiore precisione in una LocationInformation Request. |
<ojp:Complete>true</ojp:Complete> |
ojp:Probability |
1:1 | La probabilità che la location corrispondente corrisponda a quella che stai cercando.
Il risultato è ordinato in ordine decrescente con la probabilità (il più rilevante prima). La selezione dei migliori candidati per l’elenco dei risultati viene determinata dopo che il testo di input corrisponde all’intero set di dati. La probabilità viene determinata in base al numero di trigrammi corrispondenti in cui i termini possono essere scomposti e al resto che non corrisponde. In caso di corrispondenza completa, cioè senza risultato, si ha un risultato pieno e il candidato ottiene la probabilità massima 1. Se c’è ancora un risultato residuo, viene detratto un punteggio. I risultati così ottenuti possono essere successivamente influenzati da diversi criteri di valutazione, qualità e ordine di classificazione. Le corrispondenze possono essere modificate in base alla regione (codice comune), al tipo (fermata, indirizzo, luogo, POI ecc.), al mezzo di trasporto di servizio o a un valore di rilevanza. |
<ojp:Probability>0.927999973</ojp:Probability>
|
ojp:Mode |
0:* | Le modalità rilevanti per la location |
<ojp:Mode> <ojp:PtMode>rail</ojp:PtMode> <siri:RailSubmode>unknown</siri:RailSubmode> </ojp:Mode> <ojp:Mode> <ojp:PtMode>bus</ojp:PtMode> <siri:BusSubmode>localBusService</siri:BusSubmode> </ojp:Mode> |
ojp:sede
Una location può essere:
- StopPoint: Una fermata o un binario
- StopPlace: Una fermata nel senso fisico
- TopographicPlace: Un luogo
- PointOfInterest: Un PDI. Attenzione: Al momento non sono disponibili.
- Indirizzo: Un indirizzo
| Elemento | Cardinalità | Descrizione | Esempio |
|---|---|---|---|
ojp:StopPlace |
0:1 | Una fermata nel senso fisico |
<ojp:StopPlace> |
ojp:StopPoint |
0:1 | Una fermata o un binario
Al momento nessuno dovrebbe arrivare. Questa funzione non è al momento supportata. |
|
ojp:TopographicPlace |
0:1 | Un luogo |
<ojp:TopographicPlace> <ojp:TopographicPlaceCode>suburbID:8136088:6:Bernhardsdorf:5439812:10881110:MRCV</ojp:TopographicPlaceCode> <ojp:TopographicPlaceName> <ojp:Text xml:lang="de">Bernhardsdorf</ojp:Text> </ojp:TopographicPlaceName> </ojp:TopographicPlace> |
ojp:PointOfInterest |
0:1 | Un POI Sono disponibili le seguenti categorie:
service, shopping, leisure, catering, public, parkride, accommodation, sbb_services, other |
<ojp:PointOfInterest>
|
ojp:Address |
0:1 | Un indirizzo |
<ojp:Address> <ojp:AddressCode>streetID:382:13:23006351:1:Sempachstrasse:Bern:Sempach-strasse::Sempachstrasse:3014:ANY:DIVA_SINGLEHOUSE:830639:6064058:MRCV:sbb</ojp:AddressCode> <ojp:AddressName> <ojp:Text xml:lang="de">Bern, Sempachstrasse 13</ojp:Text> </ojp:AddressName> <ojp:PostCode>3014</ojp:PostCode> <ojp:TopographicPlaceName>Bern</ojp:TopographicPlaceName> <ojp:TopographicPlaceRef>23006351:1</ojp:TopographicPlaceRef> <ojp:Street>Sempachstrasse</ojp:Street> <ojp:HouseNumber>13</ojp:HouseNumber> </ojp:Address>
|
ojp:LocationName |
0:1 | Il nome del luogo |
<ojp:LocationName> <ojp:Text xml:lang="de">Bernina Suot (Pontresina)</ojp:Text> </ojp:LocationName>
|
ojp:GeoPosition |
0:1 | Le coordinate
L’esempio mostra cosa succede se non ci sono coordinate. La precisione è quindi impostata a metà della circonferenza del mondo. Cerchiamo naturalmente di evitare casi simili. |
<ojp:GeoPosition> <siri:Longitude>0.0</siri:Longitude> <siri:Latitude>0.0</siri:Latitude> <siri:Precision>20000000</siri:Precision> </ojp:GeoPosition>
|
ojp:ubicazione/ojp:StopPoint
Questa funzione non è al momento supportata.
ojp: Location/ojp: Stop Place
| Elemento | Cardinalità | Descrizione | Esempio |
|---|---|---|---|
ojp:StopPlaceRef |
1:1 | Il riferimento alla fermata. Novità: Numero SLOID |
<ojp:StopPlaceRef>ch:1:sloid:8052</ojp:StopPlaceRef> |
ojp:StopPlaceName |
1:1 | Nome della fermata |
<ojp:StopPlaceName> <ojp:Text>Bern Tiefenau</ojp:Text> </ojp:StopPlaceName>
|
ojp:TopographicPlaceRef |
1:1 | Il riferimento al luogo. |
<ojp:TopographicPlaceRef>23006351:1</ojp:TopographicPlaceRef> |
