[PostNAS Suite] Antw: ALKIS-Daten aus PostGIS in ArcGIS laden
Anja Gruenberger
Anja.Gruenberger at kreis-heinsberg.de
Do Jun 16 04:17:32 PDT 2016
Hallo Benjamin,
NULL-Werte, Umlaute, etc. sind zusätzlich noch problematisch. Eine Idee wäre in der Postgres-DB Views anzulegen mit gekürzten Spaltennamen und ersetzten Werten für NULL und Umlaute.... Für letzteres hatte mein Kollege PG-Funktionen geschrieben, die ich angehangen habe.
Viele Grüße,
Anja Grünberger.
>>> "Schepers, Benjamin" <schepers at rvr-online.de> 15.06.2016 14:15 >>>
Hallo Liste,
auf dem letzten Anwendertreffen wurde meinerseits die Frage in die Runde gestellt, was das Problem beim Laden von ALKIS-Daten ArcGIS aus einer PostGIS sein könnte…
Hier nun die Antwort (nachdem Jürgen Fischer noch die Arrays in Verdacht hatte):
Spaltennamen mit mehr als 31 Zeichen mag ArcGIS nicht, also bspw. sowas wie ‚zweifelhafterflurstuecksnachweis‘ in ax_flurstueck.
:-/
Gruß
Benjamin
Luftbild und Geoinformationssysteme
Kronprinzenstraße 35
45128 Essen
Fon: +49 201 2069-232
Fax: +49 201 2069-500
schepers at rvr-online.de
Die Regionaldirektorin
Kronprinzenstraße 35
45128 Essen
Zentrale: +49 (0) 201 2069-0
Fax: +49 (0) 201 2069-500
www.metropoleruhr.de
Postfach 10 32 64
45032 Essen
Steuernummer: RVR 112/5797/0116
USt.-ldNr.: DE 173867500
Diese E-Mail koennte vertrauliche und/oder rechtlich geschuetzte Informationen enthalten.
Wenn Sie nicht der richtige Adressat sind oder diese E-Mail irrtuemlich erhalten haben, informieren Sie bitte sofort den Absender und vernichten Sie diese Mail.
Das unerlaubte Kopieren sowie die unbefugte Weitergabe dieser E-Mail sind nicht gestattet.
This e-mail may contain confidential and/or privileged information.
If you are not the intended recipient (or have received this e-mail in error) please notify the sender immediately and destroy this e-mail.
Any unauthorised copying, disclosure or distribution of the material in this e-mail is strictly forbidden.
-------------- nächster Teil --------------
Ein Dateianhang mit HTML-Daten wurde abgetrennt...
URL: <http://lists.osgeo.org/pipermail/nas/attachments/20160616/275dd7a2/attachment.html>
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname : nicht verfügbar
Dateityp : image/jpeg
Dateigröße : 8303 bytes
Beschreibung: nicht verfügbar
URL : <http://lists.osgeo.org/pipermail/nas/attachments/20160616/275dd7a2/attachment.jpe>
-------------- nächster Teil --------------
CREATE OR REPLACE FUNCTION public.no_null(integer, integer)
RETURNS integer AS
$BODY$SELECT (CASE (SELECT $1 is null) WHEN true THEN $2 ELSE $1
END) AS RESULT$BODY$
LANGUAGE sql VOLATILE
COST 100;
ALTER FUNCTION public.no_null(integer, integer)
OWNER TO postgres;
CREATE OR REPLACE FUNCTION public.no_null(character varying)
RETURNS character varying AS
$BODY$
select CASE
WHEN length($1)>0 THEN $1 || length($1)
Else '-'||length($1)
END
$BODY$
LANGUAGE sql IMMUTABLE STRICT
COST 100;
ALTER FUNCTION public.no_null(character varying)
OWNER TO postgres;
CREATE OR REPLACE FUNCTION public.no_null(timestamp without time zone)
RETURNS timestamp without time zone AS
$BODY$
select CASE
WHEN length($1::text)>0 THEN $1
Else to_date('01 Jan 1900', 'DD Mon YYYY')
END
$BODY$
LANGUAGE sql IMMUTABLE STRICT
COST 100;
ALTER FUNCTION public.no_null(timestamp without time zone)
OWNER TO postgres;
CREATE OR REPLACE FUNCTION public.no_null(character varying, character varying)
RETURNS character varying AS
$BODY$SELECT (CASE (SELECT $1 is null) WHEN true THEN $2 ELSE $1
END) AS RESULT$BODY$
LANGUAGE sql VOLATILE
COST 100;
ALTER FUNCTION public.no_null(character varying, character varying)
OWNER TO postgres;
CREATE OR REPLACE FUNCTION public.no_null(timestamp without time zone, date)
RETURNS timestamp without time zone AS
$BODY$SELECT (CASE (SELECT $1 is null) WHEN true THEN $2 ELSE $1
END) AS RESULT$BODY$
LANGUAGE sql VOLATILE
COST 100;
ALTER FUNCTION public.no_null(timestamp without time zone, date)
OWNER TO postgres;
-------------------------------------------
--funktion fuer 'für' umlaute und so
CREATE OR REPLACE FUNCTION char_rep(character varying)
RETURNS character varying AS
$BODY$
select CASE
WHEN $1 like '%ä%'=true THEN replace($1,'ä','ä')
WHEN $1 like '%ö%'=true THEN replace($1,'ö','ö')
WHEN $1 like '%ü%'=true THEN replace($1,'ü','ü')
WHEN $1 like '%é%'=true THEN replace($1,'é','é')
WHEN $1 like '%è%'=true THEN replace($1,'è','è')
WHEN $1 like '%ó%'=true THEN replace($1,'ó','ó')
WHEN $1 like '%ú%'=true THEN replace($1,'ú','ú')
WHEN $1 like '%á%'=true THEN replace($1,'á','á')
WHEN $1 like '%ÿ%'=true THEN replace($1,'ÿ','ÿ')
WHEN $1 like '%Ã%'=true THEN replace($1,'Ã','ß')
WHEN $1 like '%Ã%'=true THEN replace($1,'Ã','Ü')
WHEN $1 like '%Ã%'=true THEN replace($1,'Ã','Ä')
Else ($1)
END
$BODY$
LANGUAGE 'sql' IMMUTABLE STRICT
COST 100;
--aenderung der Daten; Funktion mindestens 3x aufrufen, da Buchstaben einzeln ersetzt werden
update public.ax_person
set nachnameoderfirma=char_rep(char_rep(char_rep(nachnameoderfirma))),
vorname=char_rep(char_rep(char_rep(vorname))),
namensbestandteil=char_rep(char_rep(char_rep(namensbestandteil))),
geburtsname=char_rep(char_rep(char_rep(geburtsname)));
update public.ax_lagebezeichnkatalogeintrag
set bezeichnung=char_rep(char_rep(char_rep(bezeichnung)));
update public.ax_anschrift
set ortpost=char_rep(char_rep(char_rep(ortpost))),
strasse=char_rep(char_rep(char_rep(strasse)));
update public.ax_georeferenzgebaeudeadresse
set strasse=char_rep(char_rep(char_rep(strasse)));
Mehr Informationen über die Mailingliste NAS