[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