Das Problem von heute morgen ist doch etwas anders gelagert als es auf den ersten Blick scheint. Hier eine Übersicht über unterschiedliche thematischen Regeln bzw. "Ausdrücke" und deren Ergebnis in Map und Oracle.
Ausgangsbedingungen:
- es gibt nur eine Regel im Layer
- Tabelle mit 6239 Datensätzen,
CREATION_CODE_XY_1 Anzahl
<null> 1222
2 1
8 5016
Test 1 Regel: "NOT CREATION_CODE_XY_1 IN (8)"
Map-Ergebnis:
Objekte mit <null> werden dargestellt, aber Punktfang auf diese funktioniert nicht.
(Objekte mit z.B. CREATION_CODE_XY_1 = 2 werden dargestellt und Punktfang funktioniert).
SQL-Ergebnis:
select count(*) from wdp_dp_punktelement where creation_code_xy_1 not in (8);
COUNT(*)
--------
1
Anmerkung:
- Map und Oracle liefern unterschiedliche Ergebnisse.
- merkwürdiger Nebeneffekt in Map - der Punktfang funktioniert nicht.
Was ist an dieser Stelle der Fehler? Das Map ein anderes Ergebnis liefert oder der fehlende Punktfang?
Fügt man jetzt eine thematische Regel ohne Ausdruck ("Standard") hinzu, setzt die Farbe des Symbols auf "keine" und verschiebt die Regeln nach unten dann funktioniert auch der Objektfang (zusätzlich wird aber auch auf das "unsichtbare" Symbol gesnappt).
Test 2 - Regel: "CREATION_CODE_XY_1 <> 8"
Ergebnis:
Objekte mit <null> Wert werden nicht dargestellt.
(Objekte mit z.B. NOT CREATION_CODE_XY_1 = 2 werden dargestellt und Punktfang funktioniert).
SQL-Ergebnis:
select count(*) from wdp_dp_punktelement where creation_code_xy_1 <> 8;
COUNT(*)
--------
1
Anmerkung:
- Map und Oracle liefern das gleiche Ergebnis
- der Unterschied im Ausdruck zwischen Test 1 und 2 ist minimal führt in Map aber zu einem ganz anderen Ergebnis
Test 3a - Regel: CREATION_CODE_XY_1 NULL OR NOT CREATION_CODE_XY_1 IN ( 8 )
Ergebnis:
Objekte mit <null> werden dargestellt, Punktfang funktioniert.
SQL-Ergebnis:
select count(*) from wdp_dp_punktelement where creation_code_xy_1 is null or creation_code_xy_1 not in (8);
COUNT(*)
--------
1223
Anmerkung:
- Map und Oracle liefern gleiches Ergebnis
Test 3b - Regel : NOT CREATION_CODE_XY_1 IN ( 8 ) OR CREATION_CODE_XY_1 NULL
Ergebnis:
Objekte mit <null> werden dargestellt, Punktfang funktioniert.
SQL-Ergebnis:
select count(*) from wdp_dp_punktelement where creation_code_xy_1 not in (8) or creation_code_xy_1 is null;
COUNT(*)
--------
1223
Anmerkung:
- Map und Oracle liefern gleiches Ergebnis
Test 4a - Regel: CREATION_CODE_XY_1 NULL OR CREATION_CODE_XY_1 <> 8
Ergebnis:
Objekte mit <null> werden dargestellt, Punktfang funktioniert.
SQL Ergebnis:
select count(*) from wdp_dp_punktelement where creation_code_xy_1 is null or creation_code_xy_1 <> 8;
COUNT(*)
--------
1223
Anmerkung:
- Map und Oracle liefern gleiches Ergebnis
Test 4b - Regel: CREATION_CODE_XY_1 <>8 OR CREATION_CODE_XY_1 NULL
Ergebnis:
Objekte mit <null> werden nicht dargestellt
SQL Ergebnis:
select count(*) from wdp_dp_punktelement where creation_code_xy_1 <> 8 or creation_code_xy_1 is null;
COUNT(*)
--------
1223
Anmerkung:
- Map und Oracle liefern ein unterschiedliches Ergebnis, Reihenfolge des Ausdruckes beeinflusst Ergebniss in Map (nicht aber beim Test 3b, bei dem die neue Reihenfolge kein anderes Ergebnis zur Folge hatte).
Schlussfolgerungen:
- treten <null> Werte in den Daten auf ist besondere Aufmerksamkeit gefordert
- <null> Werte immer separat behandeln
- auf <null> immer mit den speziellen Ausdrücken testen (is null / is not null)
- Ergebnis mit Testdatensatz veifizieren
- Reihenfolge der Ausdrücke kann in Map das Ergebnis beeinflussen
- in Map führt Operator <> zu anderem Ergebnis als Operator (NOT) IN
Noch am Rande – folgende Ausdrücke wurden in einem DM verwendet. Der letzte als "Auffangregel" um auf "leere" Datensätze bei der Symbolart zu testen (die in der Regel <null> sind):
ID_SYMBOLART = 15 AND ID_FARBE = 1
….
to_char(ID_SYMBOLART) = '' AND ID_FARBE = 1
Der Ausdruck führt ebenfalls dazu, dass der Punktfang nicht funktioniert. Der Ausdruck muss korrekt lauten:
NOT ID_SYMBOLART NULL AND ID_FARBE = 1
Map 2013, SP2
Monday, 17 March 2014
Snap does not work with some layers
Snapping doesn't work with some layers due to a bug in Map. The issue is related to thematic rules and <null> values. Here is an example - there is only one rule which is defined as
NOT IS_EXTERNAL IN (1)
IS_EXTERNAL contains <null> values.
To get snapping to work again you need to:
- add a second rule which deals with <null> values (e.g. : IS_EXTERNAL NULL)
- set colours for the symbol used in the second rule to "none" (symbol will not be drawn)
- move rule on lowest position in style-editor.
The exact circumstances of the causes of the issue are not known to me.
Map 2013, SP2
NOT IS_EXTERNAL IN (1)
IS_EXTERNAL contains <null> values.
To get snapping to work again you need to:
- add a second rule which deals with <null> values (e.g. : IS_EXTERNAL NULL)
- set colours for the symbol used in the second rule to "none" (symbol will not be drawn)
- move rule on lowest position in style-editor.
![]() |
| Snapping restored.... |
![]() |
| ...by fiddling around with thematic rules. |
The exact circumstances of the causes of the issue are not known to me.
Map 2013, SP2
Punktfang funktioniert für einige Layer nicht
Der Punktfang hat für einige Layer nicht funktioniert.
Ursache ist ein Programmfehler. Dieser tritt scheinbar im Zusammenhang mit thematischer Darstellung und <null> Werten auf. Im Beispiel ist nur eine thematische Regel vorhanden, die wie folgt definiert ist:
NOT IS_EXTERNAL IN (1)
IS_EXTERNAL enthält auch <null> Werte.
Damit der Punktfang für diese Darstellung funktioniert muss man:
(1) eine weitere thematische Regel anlegen, die die <null> Werte abfragt (z.B. : IS_EXTERNAL NULL)
(2) die Farben des Symbols für diese Klasse jeweils auf "Keine" setzen, so dass effektiv kein Symbol gezeichnet wird.
(3) die thematische Klasse an die unterste Position schieben.
Anschliessend funktioniert für die Objekte des Layers der Punktfang wieder.
Die genauen Umstände, wann das Problem im Zusammenhang mit <null> Werten auftritt sind mir nicht klar.
Map 2013, SP2
![]() |
| Punktfang für Symbole funktioniert nicht. |
NOT IS_EXTERNAL IN (1)
IS_EXTERNAL enthält auch <null> Werte.
Damit der Punktfang für diese Darstellung funktioniert muss man:
(1) eine weitere thematische Regel anlegen, die die <null> Werte abfragt (z.B. : IS_EXTERNAL NULL)
(2) die Farben des Symbols für diese Klasse jeweils auf "Keine" setzen, so dass effektiv kein Symbol gezeichnet wird.
(3) die thematische Klasse an die unterste Position schieben.
![]() |
| Thematische Regel ergänzen um Objektfang wiederherzustellen |
Anschliessend funktioniert für die Objekte des Layers der Punktfang wieder.
![]() |
| Punktfang funktioniert wieder |
Map 2013, SP2
Thursday, 13 March 2014
Creating Security Role takes a very long time
We ran into the following issue: it was not possible to create a security role as the process took a long time and eventually we had to kill SecurityAdminitrator before it finished. Whilst the process is running SecurityAdministrator doesn't respond anymore and it looks like the application has crashed. But SecurityAdmin is just waiting that the following SQL statement finishes in Oracle:
insert into mdsys.sdo_geom_metadata_table(sdo_OWNER, sdo_table_name, sdo_column_name, sdo_DIMINFO, sdo_SRID) select 'WT_EW_05_INFO', s.synonym_name, m.column_name, m.DIMINFO, m.SRID from all_sdo_geom_metadata m, all_synonyms s where m.owner=s.table_owner and m.TABLE_NAME = s.TABLE_NAME and s.owner='WT_EW_05_INFO'
We had that issue with Oracle 11.2.0.3 on AIX.
Autodesk Support suggested using SQL Tuning Advisor to find a better execution plan. So we did and it resolved the issue. The security role is now created within seconds. Drawback is - you need an extra license for Oracle's Tuning Package (luckily we have one). You need to use Enterprise Manager to run the advisor.
AutoCAD Map 2013, SP2
insert into mdsys.sdo_geom_metadata_table(sdo_OWNER, sdo_table_name, sdo_column_name, sdo_DIMINFO, sdo_SRID) select 'WT_EW_05_INFO', s.synonym_name, m.column_name, m.DIMINFO, m.SRID from all_sdo_geom_metadata m, all_synonyms s where m.owner=s.table_owner and m.TABLE_NAME = s.TABLE_NAME and s.owner='WT_EW_05_INFO'
We had that issue with Oracle 11.2.0.3 on AIX.
Autodesk Support suggested using SQL Tuning Advisor to find a better execution plan. So we did and it resolved the issue. The security role is now created within seconds. Drawback is - you need an extra license for Oracle's Tuning Package (luckily we have one). You need to use Enterprise Manager to run the advisor.
AutoCAD Map 2013, SP2
Gastdokument anlegen dauert extrem lange
Das Anlegen eines Gastdokumentes dauerte extrem lange (mehrere Stunden bevor wir abgebrochen haben). Während der Erstellung des Oracle Benutzers und dessen Einrichtung scheint der Sicherheits-Administrator wie abgestürzt und reagiert nicht mehr. In Oracle läuft jedoch folgende Anweisung:
insert into mdsys.sdo_geom_metadata_table(sdo_OWNER, sdo_table_name, sdo_column_name, sdo_DIMINFO, sdo_SRID) select 'WT_EW_05_INFO', s.synonym_name, m.column_name, m.DIMINFO, m.SRID from all_sdo_geom_metadata m, all_synonyms s where m.owner=s.table_owner and m.TABLE_NAME = s.TABLE_NAME and s.owner='WT_EW_05_INFO'
Wir hatten das Problem mit Oracle 11.2.0.3 unter AIX.
Der Vorschlag vom Autodesk Support war, über den Oracle SQL Tuning Advisor einen alternativen Ausführungsplan ermitteln zu lassen. Das hat bei uns das Problem auch behoben - nur benötigt man dafür die separate Lizenz für das Tuning Paket (die wir auch haben).
Oracle ermittelt dabei Abfragen, die mit hohem Ressourcenverbrauch bzw. langer Laufzeit einhergehen und schlägt einen alternativen Ausführungsplan vor. Dieser kann dann gespeichert werden, so dass in Zukunft bei der gleichen Abfrage der optimierte Ausführungsplan zur Anwendung kommt. Die Einstellungen dafür muss man über den Enterprise Manager vornehmen.
Noch am Rande - die SELECT Anweisung im genannten Statement läuft ohne weiteres durch. Erst im Zusammenhang mit dem INSERT kommt es zur extrem langen Ausführungszeit.
Map 2013, SP2
insert into mdsys.sdo_geom_metadata_table(sdo_OWNER, sdo_table_name, sdo_column_name, sdo_DIMINFO, sdo_SRID) select 'WT_EW_05_INFO', s.synonym_name, m.column_name, m.DIMINFO, m.SRID from all_sdo_geom_metadata m, all_synonyms s where m.owner=s.table_owner and m.TABLE_NAME = s.TABLE_NAME and s.owner='WT_EW_05_INFO'
Wir hatten das Problem mit Oracle 11.2.0.3 unter AIX.
Der Vorschlag vom Autodesk Support war, über den Oracle SQL Tuning Advisor einen alternativen Ausführungsplan ermitteln zu lassen. Das hat bei uns das Problem auch behoben - nur benötigt man dafür die separate Lizenz für das Tuning Paket (die wir auch haben).
Oracle ermittelt dabei Abfragen, die mit hohem Ressourcenverbrauch bzw. langer Laufzeit einhergehen und schlägt einen alternativen Ausführungsplan vor. Dieser kann dann gespeichert werden, so dass in Zukunft bei der gleichen Abfrage der optimierte Ausführungsplan zur Anwendung kommt. Die Einstellungen dafür muss man über den Enterprise Manager vornehmen.
Noch am Rande - die SELECT Anweisung im genannten Statement läuft ohne weiteres durch. Erst im Zusammenhang mit dem INSERT kommt es zur extrem langen Ausführungszeit.
Map 2013, SP2
Tuesday, 18 February 2014
Calculation
Make sure
that the name of a calculation has no trailing space when you create it.
Otherwise you will get an error message when generating graphics – something along
the lines:
Saving
objects in cache failed.
Index out
of range.
You need to
open the layer file in an editor and delete the trailing space:
<CalculatedProperty>
<Name>AL_ABSTLINIE_ID </Name>
to
<CalculatedProperty>
<Name>AL_ABSTLINIE_ID</Name>
Map 2103. SP2
Berechnung
Speichern der Objekte im Cache fehlgeschlagen.
Der eingegebene Index liegt außerhalb des Bereichs des
Lesevorgangs.
Den Fehler kann man nur in der XML Datei beheben.
<CalculatedProperty>
<Name>AL_ABSTLINIE_ID </Name>
zu
<CalculatedProperty>
<Name>AL_ABSTLINIE_ID</Name>
Map 2013, SP2
Subscribe to:
Posts (Atom)


