Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Autodesk GIS Produkte
  X und Y (Varchar2) in GEOM umwandeln

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  X und Y (Varchar2) in GEOM umwandeln (1620 mal gelesen)
LarsB
Mitglied



Sehen Sie sich das Profil von LarsB an!   Senden Sie eine Private Message an LarsB  Schreiben Sie einen Gästebucheintrag für LarsB

Beiträge: 446
Registriert: 13.05.2003

Windows 7 Prof. 64-Bit
Tarox-Workstation mit Xeon 8 Core CPU mit 3.60 GHz
24 GB RAM
NVIDIA Quadro 4000
AutoCAD Map 2019
MapEdit
AutoCAD 2019

erstellt am: 10. Jun. 2015 16:13    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo,

ich habe in einer Oracle-Tabelle einfache X- und Y-Koordinaten stehen (als Varchar2). Mehr nicht. OK, eine FID steht auch noch drin  Weitere Attribute folgen.

Kann ich daraus, per VIEW oder MVIEW eine Geometrie erzeugen? Also einen Punkt in einer Karte?

Wenn ich die Frage hier stelle, klingt das irgendwie ganz einfach. Finde aber keine Lösung. Google erzählt mir was von SDO_POINT_TYPE oder SDO_GEOMETRY aber ich verstehe das nicht so recht.

Die Liste mit den Koordinaten wird unregelmäßig ergänzt oder geändert. Also müsste die Geometrie fortlaufend aktualisiert werden.

Besteht da eine elegante Möglichkeit?

Danke

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Mistfink
Mitglied
GISler


Sehen Sie sich das Profil von Mistfink an!   Senden Sie eine Private Message an Mistfink  Schreiben Sie einen Gästebucheintrag für Mistfink

Beiträge: 217
Registriert: 08.06.2006

Map 3D / 2013
AIMS 2013
Win 7, 64bit

erstellt am: 10. Jun. 2015 16:41    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für LarsB 10 Unities + Antwort hilfreich

Hallo Lars,

so ungefähr geht es:

create or replace view points
as select fid, sdo_geometry(
2001, -- 2d Punkt
null, -- SRID
sdo_point_type(x,y,null), null, null) geom
from table1;

SRID - Koordinatensystem-Code sollte noch eingetragen werden.

Table1 - x,y als Varchar2

Noch daran denken - wenn man im View Geometrien erzeugt kann man darauf keine Spatial Index anlegen. Dann werden die Daten nicht im MapGuide angezeigt.

Siehe: http://ww3.cad.de/foren/ubb/Forum285/HTML/000918.shtml#000008

Gruss, Robert

------------------
raumpatrouille3d.blogspot.com

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Mistfink
Mitglied
GISler


Sehen Sie sich das Profil von Mistfink an!   Senden Sie eine Private Message an Mistfink  Schreiben Sie einen Gästebucheintrag für Mistfink

Beiträge: 217
Registriert: 08.06.2006

Map 3D / 2013
AIMS 2013
Win 7, 64bit

erstellt am: 10. Jun. 2015 16:45    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für LarsB 10 Unities + Antwort hilfreich

noch als Ergänzung:

neue Tabelle erstellen und einmalig mit oben gezeigtem SQL abfüllen (create table as .... anstelle create view as ... )
spatial index erstellen und nutzen
auf Original Tabelle - die ja aktualisiert wird - Trigger anlegen der bei jeder Aktualisierung (Delete, Update, Insert) die geänderten/neuen/gelöschten Daten in der zweiten Tabellen mit den Spatial Geometrien nachführt.

------------------
raumpatrouille3d.blogspot.com

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

LarsB
Mitglied



Sehen Sie sich das Profil von LarsB an!   Senden Sie eine Private Message an LarsB  Schreiben Sie einen Gästebucheintrag für LarsB

Beiträge: 446
Registriert: 13.05.2003

Windows 7 Prof. 64-Bit
Tarox-Workstation mit Xeon 8 Core CPU mit 3.60 GHz
24 GB RAM
NVIDIA Quadro 4000
AutoCAD Map 2019
MapEdit
AutoCAD 2019

erstellt am: 11. Jun. 2015 08:34    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Robert,

das ist mal eine interessante Variante mit dem Trigger.
ich habe hier ständig das Problem, dass ich Geometrie aus anderen Tabellen mit Sachdaten aus weiteren Tabellen verknüpfen muss. Leider verweigert MapGuide dann die Zusammenarbeit, wie du es auch schon geschrieben hast.

Mit den Triggern kenne ich mich noch nicht so aus. Da muss ich mich erst einmal einlesen. Die View muss dafür in dem selben Benutzer liegen wie die Originaltabelle? Der Trigger auch? Oder kann man per Databaselink die Daten dann auch von einem Benutzer holen?

Also Benutzer A mit Koordinatentabelle
Benutzer B mit Trigger und VIEW bzw. mit CREATE TABLE

Danke und Gruß

Lars

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Mistfink
Mitglied
GISler


Sehen Sie sich das Profil von Mistfink an!   Senden Sie eine Private Message an Mistfink  Schreiben Sie einen Gästebucheintrag für Mistfink

Beiträge: 217
Registriert: 08.06.2006

Map 3D / 2013
AIMS 2013
Win 7, 64bit

erstellt am: 11. Jun. 2015 09:01    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für LarsB 10 Unities + Antwort hilfreich

Hallo Lars,

DB-Link heisst Du greifst auf eine andere DB zu. Ein anderer User kann aber in der gleichen DB vorhanden sein.
Bei Verwendung eines DB Links müsste man vielleicht etwas anders vorgehen - wenn Du einen DB Link verwenden musst sag nochmal Bescheid. Ist es auch eine Oracle DB zu der der Link besteht?

Ohne DB Link - Variante:
Benutzer A mit Koordinatentabelle (Original) und Trigger  und neuer Tabelle mit Spatial Geometrie
Benutzer B - mit View auf Tabelle mit Spatial Geomtrie im Benutzer A

Die Trigger müssen an die Originaltabelle da sich ja dort die Daten ändern und man auf diese Aenderungen (per Trigger) reagieren muss.


Wenn Du aber nur Punktförmige Geometrien hast - geht das dann nicht über FDO ODBC mit dem man ja auf X,Y Spalten zugreifen kann?

Zum Oracle Trigger kann ich Dir auch ein zwei Beispiele geben,


Gruss, Robert

------------------
raumpatrouille3d.blogspot.com

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

LarsB
Mitglied



Sehen Sie sich das Profil von LarsB an!   Senden Sie eine Private Message an LarsB  Schreiben Sie einen Gästebucheintrag für LarsB

Beiträge: 446
Registriert: 13.05.2003

Windows 7 Prof. 64-Bit
Tarox-Workstation mit Xeon 8 Core CPU mit 3.60 GHz
24 GB RAM
NVIDIA Quadro 4000
AutoCAD Map 2019
MapEdit
AutoCAD 2019

erstellt am: 11. Jun. 2015 09:17    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Ja, ich greife auf eine anderen Datenbank zu. Ist aber alles Oracle.
Der Database-Link steht aber auch. Das funktioniert.

FDO-ODBC? Das geht auch mit Oracle?

Ein Beispiel für den Trigger wäre auch klasse 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Mistfink
Mitglied
GISler


Sehen Sie sich das Profil von Mistfink an!   Senden Sie eine Private Message an Mistfink  Schreiben Sie einen Gästebucheintrag für Mistfink

Beiträge: 217
Registriert: 08.06.2006

Map 3D / 2013
AIMS 2013
Win 7, 64bit

erstellt am: 11. Jun. 2015 11:02    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für LarsB 10 Unities + Antwort hilfreich

Hallo Lars,


also per FDO ODBC sollte man auch auf Oracle zugreifen können.
Du müsstest auf dem MapGuide Server eine entsprechende ODBC Verbindung einrichten.

Ich weiss nicht, ob die ODBC Verbindung mit VARCHAR2 für Koordinatenangaben zurecht kommt - eventuell müsstest Du diese als NUMBER vorhalten?
Soweit ich weiss war FDO ODBC früher mal nicht so performant - aber das hat sich inzwischen vielleicht gegeben.


Falls es mit ODBC nicht geht oder andere Geomtrietypen ins Spiel kommen sind unten die Beispiel-Trigger.

Man muss auch keine neue Tabelle anlegen (also im Beispiel table1_spatial). Man kann die bestehende Tabelle auch einfach um eine GEOM Spalte ergänzen und dann per Trigger diese Spalte nachführen, wenn sich X,Y geändert hat bzw. eine neuer Datensatz eingefügt wurde. Dann muss man nur in der Ziel-DB den View erzeugen.


Robert


-- anstelle einer neuen Tabelle könnte man diese bestehende Tabelle (im Beispiel tbale1) einfach um ein GEOM Feld ergänzen
-- die trigger müsste man dann nur geringfügig anpassen.

create table table1_spatial as  select fid, sdo_geometry(
2001, -- 2d Punkt
null, -- SRID
sdo_point_type(x,y,null), null, null) geom
from table1;


CREATE OR REPLACE
TRIGGER Table1_BU  -- BU = BeforeUpdate
BEFORE UPDATE OF X,Y ON Table1 -- Trigger wird nur aktiv wenn sich X oder Y ändern
FOR EACH ROW -- pro geänderter Zeile wird Trigger ausgeführt, ändert sich mehrere Datensätze wird der Trigger je geänderten Datensatz ausgeführt
BEGIN

update table1_spatial
set geom = sdo_geometry(
2001, -- 2d Punkt
null, -- SRID muss noch gesetzt werden
sdo_point_type
(
:new.x,  -- der neue X Wert
:new.y,  -- der neue Y Wert
null
), null, null)
where
fid = :new.fid; -- FID sollte  sich nicht beim Update ändern, man kann auch  ld.fid verwenden
-- zu :new /  ld siehe: http://docs.oracle.com/cd/B28359_01/appdev.111/b28370/triggers.htm#g1041933

END;


CREATE OR REPLACE
TRIGGER Table1_BI  -- BI = BeforeInsert
BEFORE INSERT ON Table1 -- Trigger wird bei INSERT aktiv
FOR EACH ROW -- pro geänderter Zeile wird Trigger ausgeführt, ändert sich mehrere Datensätze wird der Trigger je geänderten Datensatz ausgeführt
BEGIN

insert into table1_spatial (fid, geom) values
(:new.fid, sdo_geometry(
2001, -- 2d Punkt
null, -- SRID muss noch gesetzt werden
sdo_point_type
(
:new.x,  -- der neue X Wert
:new.y,  -- der neue Y Wert
null
), null, null));

END;

------------------
raumpatrouille3d.blogspot.com

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

LarsB
Mitglied



Sehen Sie sich das Profil von LarsB an!   Senden Sie eine Private Message an LarsB  Schreiben Sie einen Gästebucheintrag für LarsB

Beiträge: 446
Registriert: 13.05.2003

Windows 7 Prof. 64-Bit
Tarox-Workstation mit Xeon 8 Core CPU mit 3.60 GHz
24 GB RAM
NVIDIA Quadro 4000
AutoCAD Map 2019
MapEdit
AutoCAD 2019

erstellt am: 11. Jun. 2015 11:50    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo,

das muss ich erst einmal verdauen. Da die andere Datenbank eine Fremddatenbank ist, muss ich mal schauen, was ich dort alles anstellen darf.

Ich habe mich gerade mit der VIEW beschäftigt.

select fid, SDO_GEOMETRY(2001, 25832,SDO_POINT_TYPE(X,Y, NULL), NULL, NULL) GEOM FROM PUNKT

will nicht so recht. ORA-01722: Ungültige Zahl sagt er mir. Wenn ich x und y durch eine einfach zahl ersetze, dann geht es.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Mistfink
Mitglied
GISler


Sehen Sie sich das Profil von Mistfink an!   Senden Sie eine Private Message an Mistfink  Schreiben Sie einen Gästebucheintrag für Mistfink

Beiträge: 217
Registriert: 08.06.2006

Map 3D / 2013
AIMS 2013
Win 7, 64bit

erstellt am: 11. Jun. 2015 13:22    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für LarsB 10 Unities + Antwort hilfreich

Hallo Lars,

die Koordinatenangaben verwenden ein Komma als Trennzeichen?

Dann sollte folgende Ergänzung helfen:

sdo_point_type(to_number(replace(x,',','.')),to_number(replace(y,',','.')),null), null, null) geom

Das Komma wird durch einen Punkt ausgetauscht und dann wird der Varchar2 Datentyp explizit in ein NUMBER Typ umgewandelt.

Robert

------------------
raumpatrouille3d.blogspot.com

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

LarsB
Mitglied



Sehen Sie sich das Profil von LarsB an!   Senden Sie eine Private Message an LarsB  Schreiben Sie einen Gästebucheintrag für LarsB

Beiträge: 446
Registriert: 13.05.2003

Windows 7 Prof. 64-Bit
Tarox-Workstation mit Xeon 8 Core CPU mit 3.60 GHz
24 GB RAM
NVIDIA Quadro 4000
AutoCAD Map 2019
MapEdit
AutoCAD 2019

erstellt am: 11. Jun. 2015 13:39    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Nein, die Koordinaten haben einen Punkt vor den Nachstellen.

Der Fehler bleibt. Ist vielleicht die Benennung X und Y für die Spalten in Oracle nicht ideal?

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

LarsB
Mitglied



Sehen Sie sich das Profil von LarsB an!   Senden Sie eine Private Message an LarsB  Schreiben Sie einen Gästebucheintrag für LarsB

Beiträge: 446
Registriert: 13.05.2003

Windows 7 Prof. 64-Bit
Tarox-Workstation mit Xeon 8 Core CPU mit 3.60 GHz
24 GB RAM
NVIDIA Quadro 4000
AutoCAD Map 2019
MapEdit
AutoCAD 2019

erstellt am: 11. Jun. 2015 15:13    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Ok, er mag kein 000000.000. Die Koordinaten (Zahl, bzw. Text) müssen 000000 sein (also ohne Nachkommastelle) oder 000000,00. Dann nimmt er es.

Oracle ist eine Zicke 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Mistfink
Mitglied
GISler


Sehen Sie sich das Profil von Mistfink an!   Senden Sie eine Private Message an Mistfink  Schreiben Sie einen Gästebucheintrag für Mistfink

Beiträge: 217
Registriert: 08.06.2006

Map 3D / 2013
AIMS 2013
Win 7, 64bit

erstellt am: 11. Jun. 2015 15:16    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für LarsB 10 Unities + Antwort hilfreich

also x,y sind die Namen der beiden Spalten, die in der Tabelle die Koordinatenwerte haben - wenn die bei Dir nicht x und y heissen müsstest Du das im SQL anpassen

hast du mal kontrolliert ob in den beiden spalten wirklich nur "Zahlenwerte" vorkommen? Um die Geometrie zu erzeugen muss ein Zahlenwert vorliegen - Oracle wandelt dabei varchar2 automatisch in number um - das funktioniert solange Zahlen in der spalte stehen. wenn dort keine Zahlen stehen kann Oracle das nicht in eine Typ "Number" umwandeln.

------------------
raumpatrouille3d.blogspot.com

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

LarsB
Mitglied



Sehen Sie sich das Profil von LarsB an!   Senden Sie eine Private Message an LarsB  Schreiben Sie einen Gästebucheintrag für LarsB

Beiträge: 446
Registriert: 13.05.2003

Windows 7 Prof. 64-Bit
Tarox-Workstation mit Xeon 8 Core CPU mit 3.60 GHz
24 GB RAM
NVIDIA Quadro 4000
AutoCAD Map 2019
MapEdit
AutoCAD 2019

erstellt am: 11. Jun. 2015 15:19    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Das mit X und Y ist mir schon klar. Also es stehen dort ziffern drin:

X 402513.437
Y 5881347.921

aber wie gesagt, den Punkt nimmt er nicht. So mag er es:

X 402513,437
Y 5881347,921

[Diese Nachricht wurde von LarsB am 11. Jun. 2015 editiert.]

[Diese Nachricht wurde von LarsB am 11. Jun. 2015 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Mistfink
Mitglied
GISler


Sehen Sie sich das Profil von Mistfink an!   Senden Sie eine Private Message an Mistfink  Schreiben Sie einen Gästebucheintrag für Mistfink

Beiträge: 217
Registriert: 08.06.2006

Map 3D / 2013
AIMS 2013
Win 7, 64bit

erstellt am: 11. Jun. 2015 15:35    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für LarsB 10 Unities + Antwort hilfreich

ah, verstehe - bei uns ist es genau andersherum - der Punkt ist das korrekte Trennzeichen, nicht das Komma.
Dann müsstest Du bei replace bloss "." und "," vertauschen.

------------------
raumpatrouille3d.blogspot.com

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

LarsB
Mitglied



Sehen Sie sich das Profil von LarsB an!   Senden Sie eine Private Message an LarsB  Schreiben Sie einen Gästebucheintrag für LarsB

Beiträge: 446
Registriert: 13.05.2003

Windows 7 Prof. 64-Bit
Tarox-Workstation mit Xeon 8 Core CPU mit 3.60 GHz
24 GB RAM
NVIDIA Quadro 4000
AutoCAD Map 2019
MapEdit
AutoCAD 2019

erstellt am: 11. Jun. 2015 15:47    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Ah, ok. Manches kann so einfach sein... Danke

So geht es nun:

select fid, SDO_GEOMETRY(2001, 25832, sdo_point_type(to_number(replace(wert_x,'.',',')),to_number(replace(wert_y,'.',',')),null), null, null) geom FROM PUNKT

Ob ich den Rest verstehe, weiß ich noch nicht. Ich habe jetzt eine View in der aus Koordinaten eine Geometrie-View gemacht wird. Jetzt muss ich das noch in eine Tabelle bekommen.

Dazu muss ich mir deine Tipps dann noch mal in Ruhe durchlesen.

Gruß, Lars

[Diese Nachricht wurde von LarsB am 11. Jun. 2015 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

LarsB
Mitglied



Sehen Sie sich das Profil von LarsB an!   Senden Sie eine Private Message an LarsB  Schreiben Sie einen Gästebucheintrag für LarsB

Beiträge: 446
Registriert: 13.05.2003

Windows 7 Prof. 64-Bit
Tarox-Workstation mit Xeon 8 Core CPU mit 3.60 GHz
24 GB RAM
NVIDIA Quadro 4000
AutoCAD Map 2019
MapEdit
AutoCAD 2019

erstellt am: 15. Jun. 2015 15:15    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Robert,

habe mir jetzt mal alles durchgelesen und nachvollzogen:

Insert---------

CREATE OR REPLACE
TRIGGER PUNKT_BI
BEFORE INSERT ON PUNKT
FOR EACH ROW
BEGIN

insert into T_KOORDINATEN  (fid, geom) values
(:new.fid, SDO_GEOMETRY(
2001,
25832, sdo_point_type(to_number(replace(:new.wert_x,'.',',')),to_number(replace(:new.wert_y,'.',',')),
null), null, null));
END;

Update-------------

CREATE OR REPLACE
TRIGGER PUNKT_BU
BEFORE UPDATE OF WERT_X,WERT_Y ON PUNKT
FOR EACH ROW
BEGIN

update T_KOORDINATEN
set geom = SDO_GEOMETRY(
2001,
25832, sdo_point_type(to_number(replace(:new.wert_x,'.',',')),to_number(replace(:new.wert_y,'.',',')),
null), null, null)
where
fid = :new.fid;
END;

DELETE---------------

CREATE OR REPLACE
TRIGGER PUNKT_BD
BEFORE DELETE ON PUNKT
FOR EACH ROW
BEGIN

DELETE FROM T_KOORDINATEN
where
fid =  ld.fid;
END;

----------------------------------------------

Wenn ich jetzt in der Tabelle Punkte, außer den Koordinaten, noch einen TESTWERT (z.b. die farbe rot, grün oder blau) habe, wie bekomme ich den dann mit? Wo müsste ich diesen z.B. beim BEFORE UPDATE Trigger einsetzten, damit dieser auch aktualisiert wird?

Ich habe einige Varianten getestet, leider erfolglos. 

Danke für deine Hilfe.

Gruß, Lars

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Mistfink
Mitglied
GISler


Sehen Sie sich das Profil von Mistfink an!   Senden Sie eine Private Message an Mistfink  Schreiben Sie einen Gästebucheintrag für Mistfink

Beiträge: 217
Registriert: 08.06.2006

Map 3D / 2013
AIMS 2013
Win 7, 64bit

erstellt am: 17. Jun. 2015 07:50    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für LarsB 10 Unities + Antwort hilfreich

Hoi Lars,

hab erst ich jetzt gesehen dass Du noch etwas geschrieben hast.


Beim Update - Du willst noch einen weiteren Wert berüpcksichtigen, der sich in der Ausgangstabelle geändert hat und in der zweiten Tabelle nachgeführt werden muss?

im Update Trigger:


update T_KOORDINATEN
set geom = SDO_GEOMETRY(
2001,
25832, sdo_point_type(to_number(replace(:new.wert_x,'.',',')),to_number(replace(:new.wert_y,'.',',')),
null), null, null),
set testwert = :new.testwert
where
fid = :new.fid;

Robert

------------------
raumpatrouille3d.blogspot.com

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz