rgdal speichern per writeOGR den Fehler "Failed to create feature"

Wie erweitere ich R um eigene Funktionen oder Pakete? Welches Paket ist passend für meine Fragestellung?

Moderatoren: EDi, jogo

Antworten
Stoker

rgdal speichern per writeOGR den Fehler "Failed to create feature"

Beitrag von Stoker »

Hallo!
Dieses Forum scheint ja noch nicht so stark frequentiert zu sein, aber vielleicht kann mir ja trotzdem jemand helfen :D

Ich habe ein Problem beim speichern eines SpatialPolygonDataframes mit dem Befehl "writeOGR" des Paketes rgdal.
Das merkwürdige an der ganzen Sache ist, dass das Speichern des Objektes noch vor ein paar Wochen funktioniert hat und ich weder das Projekt, noch die Quelldatei aus der der Dataframe stammt geändert habe.

meine Arbeitsgänge bestehen darin, eine MapInfo Datei per "readOGR" einzulesen. Anschließend will ich diese (zunächst um weitere Fehlerquellen auszuschließen), sofort wieder per "writeOGR" als Map Info Datei abspeichern. Hierbei kommt es zur Fehlermeldung "Failed to create feature". Die Dateien werden dann zwar im Verzeichnis abgelegt, sind aber leer (lediglich die Namen der Spalten sind in der Datei zu finden).

Ich habe auch schon versucht, die Daten als ESRI Shape abzuspeichern, dann werden die Dateien wesentlich größer, doch wenn ich diese versuche zu öffnen geht etwas schief, also stimmt mit den Shapes auch irgendetwas nicht.

Damit ihr das ganze nachvollziehen könnt, hier noch mal ein Beispiel:

Code: Alles auswählen


library(rgdal)
setwd("G:/Löschen")

(dat <- data.frame(Number=c(1,2,3,4,5,6),
                    East=c(371008,371124,371346,371276,371051,371344),
                    North=c(5720763,5720567,5720761,5720493,5720506,5720490),
                    BW=c(320,350,300,380,275,390)))

coordinates(dat) <- ~East+North

proj4string(dat) <- "+proj=utm +zone=32 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"

writeOGR(dat, dsn = "Zones.tab", layer = "Zones", driver = "MapInfo File")

Benutzeravatar
EDi
Beiträge: 1599
Registriert: Sa Okt 08, 2016 3:39 pm

Re: rgdal speichern per writeOGR den Fehler "Failed to create feature"

Beitrag von EDi »

Dieses Forum scheint ja noch nicht so stark frequentiert zu sein,
Wir hatten vor kurzem einen Komplett-Verlust des Forums, deshalb ist es hier noch so leer.
Herzlich willkommen!
Ich mag R-GIS Fragen ;)

Das hier könnte es sein?
Hab es mit

Code: Alles auswählen

layer_options='BOUNDS=371008,5720490,371346,5720763'
versucht, aber das hat nicht geklappt. Hab leider gerade keine Zeit um das näher mir anzuschauen....
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.

Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
Bild.
Stoker

Re: rgdal speichern per writeOGR den Fehler "Failed to create feature"

Beitrag von Stoker »

Danke für die Antwort!
Leider funktioniert das nicht. Wenn ich es richtig verstehe sind die festgelegten Bounds ja die Begrenzungen der Koordinaten und lt. deinem Link liegen meine Koordinaten ja innerhalb der Grenzen der Standardeinstellung, das sollte damit dann doch eigentlich nichts zu tun haben.

Noch jemand eine Idee?


P.S.
Mein Beileid zum Verlust des Forums!
Benutzeravatar
EDi
Beiträge: 1599
Registriert: Sa Okt 08, 2016 3:39 pm

Re: rgdal speichern per writeOGR den Fehler "Failed to create feature"

Beitrag von EDi »

Ich habe auch schon versucht, die Daten als ESRI Shape abzuspeichern, dann werden die Dateien wesentlich größer, doch wenn ich diese versuche zu öffnen geht etwas schief, also stimmt mit den Shapes auch irgendetwas nicht.
Das funtioniert bei mir problemlos:

Code: Alles auswählen

writeOGR(dat, dsn = "Zones.shp", layer = "Zones", driver = "ESRI Shapefile")
dat2 <- readOGR(dsn = "Zones.shp", layer = "Zones")
plot(dat2)
Muss es MapInfo sein, oder geht auch was anderes?
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.

Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
Bild.
Stoker

Re: rgdal speichern per writeOGR den Fehler "Failed to create feature"

Beitrag von Stoker »

OK Shape scheint mit dem Testdatensatz tatsächlich zu funktionieren.
Mit meinen Realdaten kommt es aber zu Problemen beim Shape Export, hier müsste man also manuell nacharbeiten

Code: Alles auswählen

Error in writeOGR(richtwertzonen, dsn = "G:/XXX/",  : 
  Creation of output file failed
In addition: Warning messages:
1: In abbreviate(fld_names, minlength = 7) :
  abbreviate used with non-ASCII chars
2: In writeOGR(richtwertzonen, dsn = "G:/XXX/",  :
  Field names abbreviated for ESRI Shapefile driver
Eigentlich muss es eine MapInfoTAB sein.
Ein anderes GIS kann ich hier nicht nutzen und nachdem die TAB erzeugt wurde soll diese sofort in einer vorbereiteten Thematischen Karte dargestellt werden. Ich könnte zwar auch jedes mal eine Shape erzeugen, diese dann in MapInfo in eine TAB umwandeln und anschließend die Thematische Karte öffnen, aber dann ist immer Handarbeit erforderlich.
Benutzeravatar
EDi
Beiträge: 1599
Registriert: Sa Okt 08, 2016 3:39 pm

Re: rgdal speichern per writeOGR den Fehler "Failed to create feature"

Beitrag von EDi »

Code: Alles auswählen

 abbreviate used with non-ASCII chars
hört sich nach nem encoding problem an. "Komische" (z.b. Umlaute) Zeichen drin?
Ein anderes GIS kann ich hier nicht nutzen
Das ist das Problem von proprietären Formaten und Software :roll: .


Hier ein möglicher work-around:
Du könnest als shape exportieren und die erzeugte shape mit ogr2ogr direkt umwandeln.
Kommandozeilenaufrufe kannst du mit

Code: Alles auswählen

system()
machen.

Das funktioniert:

Code: Alles auswählen

writeOGR(dat, dsn = "tmp/Zones.shp", layer = "Zones", driver = "ESRI Shapefile", verbose = TRUE)
system('ogr2ogr -f "MapInfo File" tmp/Zones.tab tmp/Zones.shp')
dat2 <- readOGR(dsn = "tmp/Zones.tab", layer = "Zones")
plot(dat2)
Oder mal rgdal2 ausprobieren und wenn der fehler damit auch auftriit mal ein bug-report auf github aufmachen.
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.

Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
Bild.
Stoker

Re: rgdal speichern per writeOGR den Fehler "Failed to create feature"

Beitrag von Stoker »

[quote="EDi"]

Code: Alles auswählen

 abbreviate used with non-ASCII chars
hört sich nach nem encoding problem an. "Komische" (z.b. Umlaute) Zeichen drin?

Ja, das liegt wahrscheinlich an "ö", "ä", "ü", "ß", etc.
Die datei sieht aber nunmal so aus, ich müsste diese Zeichen also beim Import ersetzen und da die Datei auch hinterher wieder diese Zeichen beinhalten muss, müsste ich dann nach dem Umwandeln der Shape in eine TAB, diese Felder wieder umbenennen. Das ist alles sehr umständlich.


Sowohl ogr2ogr, als auch rgdal2 scheinen auf meiner R Version nicht zu laufen:

Code: Alles auswählen

> install.packages("rgdal2")
Installing package into ‘C:/Users/u628003/Documents/R/win-library/3.3’
(as ‘lib’ is unspecified)
Warning in install.packages :
  package ‘rgdal2’ is not available (for R version 3.3.1)
> install.packages("ogr2ogr")
Installing package into ‘C:/Users/u628003/Documents/R/win-library/3.3’
(as ‘lib’ is unspecified)
Warning in install.packages :
  package ‘ogr2ogr’ is not available (for R version 3.3.1)
Benutzeravatar
EDi
Beiträge: 1599
Registriert: Sa Okt 08, 2016 3:39 pm

Re: rgdal speichern per writeOGR den Fehler "Failed to create feature"

Beitrag von EDi »

rgdal2 gibt es nicht auf CRAN, siehe dazu den Link den ich oben schon gepostet hatte:

Code: Alles auswählen

if (packageVersion("devtools") < 1.6) {
install.packages("devtools")
}
devtools::install_github("thk686/rgdal2")
ogr2ogr ist kein R package, sondern ein Teil von GDAL.
Das wiederum ist das Arbeitstier von rgdal. Man kann GDAL/ogr2ogr auch direkt aus der Kommandozeile bedienen (rgdal ist nur ein Interface in R).
Und genau das macht system() - es schickt einen Befehl an die Kommandozeile.
Ob das unter Windows klappt weiß ich nicht (gibt es da noch die Kommandozeile?).
Das ist alles sehr umständlich.
Auch hier wieder ein Problem des proprietären ESRI Formats (max. 10 character lange spaltennamen, soweit ich weiß, deshalb die abbkürzung?!).
Dann kein Umweg über shapefiles. Dann doch mal rgdal2 probieren...
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.

Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
Bild.
Stoker

Re: rgdal speichern per writeOGR den Fehler "Failed to create feature"

Beitrag von Stoker »

Danke für die Viele Hilfe und deine Geduld!
Ich würde es dann gerne mal mit rgdal2 probieren, leider wird mir aber bei der von dir geposteten Eingabe folgende Fehlermeldung angezeigt:

Code: Alles auswählen

Error in curl::curl_fetch_disk(url, x$path, handle = handle) : 
  Timeout was reached
Antworten