Arbete med FME-skript mot EntryScape API

Nu kan inte jag säga att jag är någon jätteexpert på APIer och beskrivningar, men ja, det är nog bra att förtydliga att viss url är styrda mer mot UI och andra urler är mer mot själva data.

Får vår del är exempelvis UI: https://catalog.boras.se/catalog/1/datasets/17/
Medans själva data finns under: https://catalog.boras.se/store/1/resource/17/

För att hitta den fil som man vill byta ut med ex. FME så kan man hitta den antingen genom att gå in på den andra länken och titta under taggen: “<dcat:distribution” i den fil som laddas ned. Det är urlen för själva filen och det är den som man vill kunna byta ut med intervall, och alltså bör ha koll på.
Alternativt kan man in under “network” för developer-tools i webbläsaren, gå in på metadata-datakällan: EntryScape
Klicka på de tre punkterna och klicka “Ersätt fil”. Man kommer då se anropet för den filen och se vilken resource det är:

Jag återkopplar nedan i ett nytt svar kring vad jag kommit fram till kring uppladdning genom FME.

Har nu testat lite att se över hur det fungerar med FME och nyttja APIet för Entryscape.

Jag har nu lyckats att ersätta en fil i systemet, dock så finns några bitar som inte fungerar helt 100 än.

Problem 1 är att jag inte har lyckats att föra över den autentiserings-cookie som skapas vid inlogg så att den kan nyttjas av nästkommande uppladdning av data. Inloggningen går bra, men om jag sparar cookien och skickar med den till nästa så åker jag på “Unauthorized”.

Som ett test så bifogade jag istället en cookie manuellt som jag fått efter inlogg genom webbläsaren och då fungerade även uppladdningen av filen. Så för att få en tillförlitlighet så måste cookien kunna överföras korrekt genom processen. Alternativt att man kan få en token som har en väldigt lång hållbarhetstid.

Problem 2 är att datumet för filen inte uppdaterades.
Så där måste man hitta var den kan uppdateras någonstans, annars kommer man tro att filen inte är uppdaterad även om den är det. Har inte hunnit titta något i dokumentationen runt det, så får ta en kik framöver. Eller om någon redan har koll på det?

@AndreParviainen Jag bröt ut detta från FAQ och skapade ett separat FME-fokuserat ämne för detta. Jättebra synpunkter, jag håller på och arbetar med dokumentation för ny release och kan ta med det i beaktning kring URL:er.

Jag pingar dig @felipeverdu och undrar om du hunnit kika på detta? Jag ska försöka ta det en runda internt för att kunna ge bra svar.

Redigering 1: Repo för FME-scripts finns här. Gör gärna en PR för att dela tillbaka.

Har hittat hur man uppdaterar metadata nu också. Det fungerade bra vad jag kunde se.
Så nu är det egentligen “bara” autentiseringen som behöver ses över så att det kan fungera smidigt.
Vet inte riktigt hur jag ska gå vidare med den biten. Får se om jag kan hitta något mer som det går att ändra på.
I övrigt bör de flesta bitarna vara på plats för att sätta upp ett flöde som ska kunna fungera.

Inspel från @josdel cc @AttaRabbi (citerat från e-post nyss) ang. Huddinges vägval med FME-skript:

Det vi testade är att koppla upp oss mot EntryScape och uppdatera en KML-fil mha ett FME-skript och det fungerade. Vi bestämde dock att inte skapa FME skript och begränsa oss till WFS och WMS-tjänster i nuläget. Dessa skapas automatiskt när vi publicerar data i Webbkartan. På så sätt blir publicering av öppna data inte så mycket merarbete.
… vi har alltså ingen FME-Entryscape integration i nuläget.

@AndreParviainen välkommen att ställa frågor, finns väl andra sätt då som det låter från @josdel. :slight_smile: Har inte fått svar på om Gävle hjälpte Huddinge med FME-skript. Jag bryter ut i en separat tråd om/när vi kommer in på andra metoder än FME-skript.

Hej @josdel
Har du möjlighet att bifoga schemat? Alternativt tala om hur autentiseringen överförs?
Jag har inte hunnit titta så my mycket på detta, men just nu fungerar körningen jag skapat, men bara om jag aktivt lägger in auth-cookien som en parameter vid postning av filen. Har försökt att spara cookie från en httpcaller till nästa, men verkar inte fungera.

WMS/WFS/API är absolut ett sätt att publicera ut vår data också. Dock är det bra att alternativet finns och att vi har ett fungerande sätt att uppdatera data per automatik.

Hej

Tyvärr har inte hunnit med det.

/F

Hej,
Jag pratar med vår GIS-ingenjör som testade. Jag återkommer!

Tack @josdel! Om GIS-ingenjören är här på forumet (tror jag) kan du också göra ett @ och nämna rätt person så kan den personen lägga ett inlägg direkt här i tråden antingen via webben eller svara direkt på e-postmeddelandet. :slight_smile:

@josdel @mattias
Tog en litet titt till och såg att jag hade missat en liten detalj. Nu fungerar körningen som den ska även med den cookie som sparas vid första anropet.
Så nu är allt på banan :slight_smile:
Om det finns möjlighet kan jag ladda upp workspacet för andra att nyttja.

1 Like

@AndreParviainen OK, toppen! Jättebra, härligt fixat! Vad är “workspacet” för typ av material? Är det källkod? Projektfil? Om det inte är källkod kanske det går att publicera som en öppen datamängd? :slight_smile: Annars är nog ett förråd på en git lämpligt tänker jag spontant. Har ni det?

Det är en projektfil för programmet.
Vet inte vilket sätt som är det bästa att dela det på egentligen.
Tänker att det är förknippat med EntryScape, så det är väll kanske om ni har någon möjlighet att sprida det på något sätt? Känns som att det vore den naturliga vägen för att söka upp det på.
Vi skulle väll kunna publicera det, men känns inte som att det riktigt är rätt målgrupp på det sätet kanske.

Ok tack @AndreParviainen. Kan du skicka projektfilen till mig? Så ska jag ladda upp den på en öppen och tillgänglig plats.

Hej @mattias var kan jag hitta workspacen (FME projektfilen)?

Hej @felipeverdu! Här hittar du 2 exempel som jag laddat upp i en öppen repo. Du är varmt välkommen att dela tillbaka om du implementerar annorlunda. Applåder till @josdel @AttaRabbi och @AndreParviainen som delat! :clap: :tada:

1 Like

Hej, tack för att ni har delat skripten! Jag har lyckats ladda upp min första json fil med skripten men har fastnat med att uppdatera datumet. När jag ersätta filen i webbläsaren saknas min anrop “?preventCache=XXXX”.

I skripten får jag status code 400 - Bad Request. Jag antar att siffrorna efter “preventCache” är fasta, kan jag hitta dem någon annanstans?

1 Like

Hej @williamw

Jag tror att hemsidan har uppdateras något sedan schemat skapades. Därav att det står fel i beskrivningen just nu.
Numera står det endast en siffra. Inget om “preventCahce”.

Ser ut som att du har siffran 5 eller siffran 4(?). Jag gissar på att det är svaret från siffran 5 som du ska titta i. Svaret bör se ut ungefär som nedan:

{“http://schema.theodi.org/odrs#copyrightHolder":[{“type”:“uri”,“value”:“https://catalog.boras.se/store/1/resource/1”}],“http://www.w3.org/1999/02/22-rdf-syntax-ns#type”:[{“type”:“uri”,“value”:“http://schema.theodi.org/odrs#RightsStatement”}]},“https://catalog.boras.se/store/1/resource/103”:{“http://purl.org/dc/terms/format”:[{“type”:“literal”,“value”:“application/json”}],“http://purl.org/dc/terms/license”:[{“type”:“uri”,“value”:“http://creativecommons.org/licenses/by/4.0/”}],“http://www.w3.org/ns/dcat#downloadURL”:[{“type”:“uri”,“value”:“https://catalog.boras.se/store/1/resource/102”}],“http://data.europa.eu/r5r/availability”:[{“type”:“uri”,“value”:“http://data.europa.eu/r5r/availability/stable”}],“http://www.w3.org/ns/adms#status”:[{“type”:“uri”,“value”:“http://purl.org/adms/status/Completed”}],“http://purl.org/dc/terms/title”:[{“type”:“literal”,“value”:"Badhus/simhallar JSON”,“lang”:“sv”}],“Data Catalog Vocabulary (DCAT) Namespace i JSON-format”,“lang”:“sv”}],“http://www.w3.org/1999/02/22-rdf-syntax-ns#type":[{“type”:“uri”,“value”:“http://www.w3.org/ns/dcat#Distribution”}],“http://purl.org/dc/terms/rights”:[{“type”:“bnode”,“value”:“_:node1ge7qa3p6x1”}],“http://purl.org/dc/terms/modified”:[{“type”:“literal”,“value”:“2022-10-06T14:12:00.443Z”,“datatype”:"http://www.w3.org/2001/XMLSchema#date”}]}}

Du kan skippa det som står framför {“Open Data Rights Statement Vocabulary

1 Like

Tack så mycket @AndreParviainen, nu fungerar den bra!

Några generella frågor till alla - hur använder ni FME skript för att hålla data uppdaterat i EntryScape? Har ni en schemalagt skript för varje datamängd som läser från en källa, t.ex geodatabas, skapar en json eller csv och laddar upp till plattformen? Och tidsintervallen för uppdatering till plattformen beror på hur ofta datamängden uppdateras? Kör ni FME Server eller Desktop?

@williamw Skönt att höra :slight_smile:

Vi har schemalagt våra körningar via FME-Server för att ha en helt automatiserad lösning. Som det ser ut nu har vi två steg där först en JSON-fil skapas från ett workspace som läser från vår geodatabas. När den körningen är färdig triggas nästa schema som uppdaterar EntryScape och laddar upp den filen som skapades i det första workspacet.

Ett alternativ hade varit att lägga JSON-filerna på en extern webbserver och låtit använda URLen till filen som API-länk för datamängden istället för att ladda upp filer. Då hade man kunnat skippat detta schema med att uppdatera JSON-filer i EntryScape.

Som du säger så beror det lite på datamängden vilket intervall som passar bäst. De flesta av våra datakällor har vi uppdatering en gång i månaden på, som det ser ut nu.

@AndreParviainen tack för svaret.

Det var lite så jag tänkte också men jag tror inte att vi kommer att ha en användning för json och csv filer internt så vill helst inte skriva ut dem till en mapp. Jag testade nu med en att läsa från en geodatabas till en FeatureWriter transformer och det verkar att ha fungerat.