fredag 27. desember 2024

FME - Sletting av objekter i en geodatabase

Hvis man skal slette objekter i en geodatabase ved hjelp av FME finnes det forskjellige måter å gjøre dette på. Man kan benytte en transformer i FME som heter DatabaseDeleter. Den er ikke akkurat kjapp, så jeg ender ofte opp med å heller skrive til en ny geodatabase istedet. Hvis man skal oppdatere en eksisterende geodatabase, så kan man navne om den nye geodatabasen i etterkant. 

Under har jeg likevel vist hvordan jeg bruker DatabaseDeleter.

Eksempel: Jeg har en featureklasse med ca. 500 000 polygonobjekter (skogbruksplaner i Trøndelag). Jeg vil slette alle skogbruksplaner i Snåsa (ca. 5000 objekter). Det tar ca. 18 minutter med workbenchen under. Prøver også uten Feature Caching og uten Feature Counting, men det tar ca. like lang tid. 



Jeg har satt opp en Tester som sjekker at Kommunenummer er lik 5041 (Snåsa).



Videre bruker jeg følgende parametre i DatabaseDeleter:


Virker litt unødvendig å sette opp samme spørring på kommunenummer to ganger, men når jeg prøver å kjøre uten Tester, tar det veeeeeldig lang tid. Stopper jobben etter ca. en time. Konklusjonen er nok at det lønner seg å isolere de objektene som man skal oppdatere. Tar gjerne imot tips dersom noen vet hvordan man kan gjøre dette raskere.

Dette er en metode som fungerer i FME dersom man skal fjerne noen objekter fra en featureklasse. Dersom man derimot skal fjerne ALLE objektene i featureklassen, før man eventuelt oppdaterer databasen med nye objekter vil det lønne seg å bruke Truncate Existing som parameter i Feature Writer. Se eksempelet under:



Her får man slettet alle skogbruksplaner før man fyller på med nye skogbruksplaner.

Det er flere tilfeller hvor jeg ønsker å benytte dette, f.eks. ved oppdatering av plandata og skogbruksplaner.

 



Ingen kommentarer:

Legg inn en kommentar