Sdo_relate on 3D r-tree
Is that possible to perform SDO_RELATE on 3D R-tree index created by oracle?
I just upgrade oracle from 9.0.1 to 9.2. I was able to do SDO_RELATE on 3D R-tree, but not any more. I get error message:
ORA-13243: speciifed operator is not supported for n-d R-tree: []
I checked the document "Oracle 9i Spatial User's Guide and Reference" for 9.2, but can't find any change about SDO_RELATE.
Is there any way to solve this?
Just curious, why oracle disable this function?
If you create a 3d r-tree index, Oracle disables all operators except SDO_FILTER. This is documented under the create index statement, the text is with the sdo_indx_dims parameter. It was this way in the first release of 9i as well as 9i Release 2 (exact same error message).
The reason for this is because SDO_RELATE, SDO_NN, and SDO_WITHIN_DISTANCE are always guaranteed to return correct answers. However, none of these operators works in 3 dimensions. Rather than let users think they are getting correct 3D results, the operators were disabled. SDO_FILTER does return approximate answers correct in three dimensions.
Hope this helps.
Similar Messages
-
SDO_FILTER and SDO_RELATE combined in the same query
Is it possible to combine these two operations?
I have a query that ideally should use SDO_RELATE for polygon data (some 25 million records). However it takes too long to run.
For curiosity's sake I tried using SDO_FILTER and again this takes hours. Again for curiosity's sake I combined the two and records are returned in about 2 mins. Please see the query below (to simplify matters I have used point data).
SELECT
FROM
table t
WHERE
MDSYS.SDO_RELATE(
t.geometry,
MDSYS.SDO_GEOMETRY( 2001,
null,
MDSYS.SDO_POINT_TYPE( 501900, 308000, null ),
null,
null
'mask=anyinteract querytype=WINDOW'
) = 'TRUE'
AND MDSYS.SDO_FILTER(
t.geometry,
MDSYS.SDO_GEOMETRY( 2001,
null,
MDSYS.SDO_POINT_TYPE( 501900, 308000, null ),
null,
null
'mask=anyinteract querytype=WINDOW'
) = 'TRUE'
As I see it, in this case SDO_FILTER is doing the primary filtering part. SDO_RELATE is doing primary filtering again followed by secondary filtering the resulting data which is why it is quicker. The data does appear to be correct.
Now am I barking up the wrong tree? Whether I am or not, why is this combination faster than individual use? I would appreciate any thoughts on this please.
Cheers guys
Jamessomething else is going on, although without seeing the real query it is hard to know.
SDO_RELATE is a supoerset of SDO_FILTER. With SDO_FILTER and index query is done, with SDO_RELATE an index query is done, then the relate is done on the geometries returned by the filter query.
What kind of index are you using?
What version of spatial are you using?
Can you post the query window?
Are your geometries valid? -
Internal error in R-tree processing: [Recursive fetch error]
Hello,
I seem to be getting an error when using any type of SDO function (SDO_RELATE, SDO_FILTER, SDO_ NN, ... ) on my spatially indexed data. The error I'm getting is this:
ERROR at line 1:
ORA-29903: error in executing ODCIIndexFetch() routine
ORA-13236: internal error in R-tree processing: []
ORA-13236: internal error in R-tree processing: [Recursive fetch error]
The interesting part of this is that I only get this error if I insert more than 31 entries into the table. All the relevant code is posted below, what I do is create the table, then create the metadata from the sqlplus interface. After that I run a java program that does Clear() then Insert() then Create_Indices(). All these run just fine (at least run without telling me about any errors). But as soon as that is all done and I do an SDO query on the data, for example:
SELECT location stop_range_poly_area
FROM stops
WHERE SDO_FILTER
location,
SDO_GEOMETRY
2003, null, null,
SDO_ELEM_INFO_ARRAY(1,1003,1),
SDO_ORDINATE_ARRAY(300,300, 600,300, 600,600, 300,600, 300,300)
) = 'TRUE';
I get the above mentioned error. But if I change my data so that it doesn't have more than 31 entries (doesn't matter which 31 entries, just so long as it doesn't exceed that number) that query (and all of my other SDO test queries on the stops table) seems to work just fine.
Thanks for looking at this,
Brad
---- SQLPLUS Code -----------------------------------------------------------------------------------------------------------
CREATE TABLE stops
stop_id VARCHAR2(4) PRIMARY KEY,
address VARCHAR2(256),
location sdo_geometry
INSERT INTO user_sdo_geom_metadata VALUES
'stops',
'location',
MDSYS.SDO_DIM_ARRAY
MDSYS.SDO_DIM_ELEMENT('X', 0, 600, 0.005),
MDSYS.SDO_DIM_ELEMENT('Y', 0, 800, 0.005)
null
----- Java Code -----------------------------------------------------------------------------------------------------------------
// Clear
// Description:
// This function clears all the data in the stop tables in the database
// given in the connection.
public static void Clear (Connection connection)
Statement statement;
try
statement = connection.createStatement();
statement.executeUpdate("DROP INDEX stops_index");
statement.executeUpdate("DELETE stops");
statement.close();
catch (SQLException e)
System.err.println("SQLExcpetion (Stop.Clear()): " + e.getMessage());
// Create_Indices
// Description:
// Create indices for stops table
public static void Create_Indices (Connection connection)
Statement statement;
String sql_query;
sql_query = "CREATE INDEX stops_index ON stops(location) " +
"INDEXTYPE IS MDSYS.SPATIAL_INDEX";
try
statement = connection.createStatement();
statement.executeUpdate(sql_query);
statement.close();
catch (SQLException e)
System.err.println("SQLExcpetion (Stop.Create_Indices()): " + e.getMessage());
// Insert
// Description:
// This function inserts this object into the stops table in the database
// given in the connection.
public void Insert (Connection connection)
Statement statement;
String sql_query;
sql_query = "INSERT INTO stops VALUES ('" +
stop_id + "', '" +
address + "', " +
"sdo_geometry(2001, null, sdo_point_type(" +
location.x + "," +
location.y + ",null), null, null)" +
try
statement = connection.createStatement();
statement.executeUpdate(sql_query);
statement.close();
catch (SQLException e)
System.err.println("SQLException (Stop.Insert()):" + e.getMessage());
Message was edited by: loos to include the changes proposed by the second poster.Hi,
Thanks for trying but changing those items for the specific failing queries didn't seem to help. Though you do seem to be right about the internal/external polygon problem, so I changed it all my other queries to see if they would fail (that way things would at least be consistent), but it doesn't seem to make a difference. All my old failing quries still fail and my working ones still work. I also changed the co-ordinates as you specified and still have no changes (unless of course the results changed, but right now I'm just looking for queries that compile and run, the results don't matter yet).
Maybe this will help, I'll give you guys both sets of data, one that works and one that doesn't and maybe you can see a problem in the data that I'm just missing or too ignorant to see. The data is simply comma seperated values that I parse into the required fields in the order (id, description, x, y).
So far, the only reason I've been able to find that the non-working data doesn't work is because there are more than 31 rows. I started taking records out of the stops table in a binary search sort of pattern. If I take out stops 100-115 (resulting 29 records) all the queries work, if I take out stops 100-107 (resulting in 36 records) it doesn't work. If I take out 109-115 (resulting in 35 records) it doesn't work. If I take out 1-11 (resulting in 32 records) it doesn't work. If I take out 1-12 (resulting in 31 records) it does work. Here's a table
Take out Stops ---- records left -- Works?
s1-s11 ------------ 32 ------------ No
s1-s12 ------------ 31 ------------ Yes
s100-s115 --------- 29 ------------ Yes
s100-s107 --------- 36 ------------ No
s109-s115 --------- 35 ------------ No
Thanks again for checking this out,
Brad
------- Working Data ---------------------------------------------------------------------------------------
(Student_id, Department, x, y)
Student_1,Computer Science ,296,131
Student_2,Social Science,130 ,279
Student_3,Mechanical Engineering ,392,180
Student_4,Electrical Engineering ,342,322
Student_5,Computer Science ,165,490
Student_6,Scicology ,393,533
Student_7,Physical Therapy ,590,616
Student_8,Civil Engineering ,165,640
Student_9,English ,360,412
Student_10,Economy ,89,32
Student_11,Computer Science ,26,117
Student_12,Social Science,430 ,291
Student_13,Mechanical Engineering ,382,80
Student_14,Electrical Engineering ,542,222
Student_15,Computer Science ,154,290
Student_16,Scicology ,493,323
Student_17,Physical Therapy ,290,426
Student_18,Civil Engineering ,65,230
Student_19,English ,300,412
Student_20,Economy ,44,292
Student_21,Computer Science ,146,431
Student_22,Social Science,405 ,179
Student_23,Mechanical Engineering ,192,480
Student_24,Electrical Engineering ,412,202
Student_25,Computer Science ,265,49
Student_26,Scicology ,33,273
Student_27,Physical Therapy ,186,216
Student_28,Civil Engineering ,365,600
Student_29,English ,309,42
Student_30,Economy ,415,392
------- Non Working Data ---------------------------------------------------------------------------------
(Stop_id, Address, x, y)
s1, 2341 Portland,377,64
s2, 24th St. / Hoover St.,308,22
s3, 2620 Monmouth Ave.,272,138
s4, 2632 Ellendale Pl.,128,110
s5, 2726 Menlo Ave.,85,231
s6, 2758 Menlo Ave.,84,124
s7, 28th St. / Orchard Ave.,183,236
s8, 28th St. / University Ave.,414,308
s9, 30th St. / University Ave.,391,352
s11, 34th St. / McClintock St.,180,458
s12, 36th Pl. / Watt Way,176,622
s13, Adams Blvd. / Magnolia Ave.,218,87
s14, BG Mills Apts.,23,637
s15, Cardinal Gardens Apts.,156,389
s16, Centennial Apts.,373,126
s17, Chez Ronee Apts.,446,414
s18, City Park Apts.,70,323
s19, Dental School,219,478
s96, Founders Apts.,373,192
s97, Hillview Apts.,412,214
s98, House of Public Life,531,303
s99, JEP,304,523
s100, Kerchoff Apts.,473,272
s101, Leavey Library,370,559
s103, McClintock St. / Childs Way,129,553
s104, Mt. St. Marys College,565,127
s105, Pacific Apts.,398,240
s107, Parking Center,525,652
s109, Parkside,78,651
s110, Severance St. / Adams Blvd.,435,202
s111, Research Annex,492,776
s112, Sierra Apts.,352,230
s113, Sunset Apts.,267,278
s114, Terrace Apts.,156,280
s115, Troy East Apts.,402,397
s116, University Regents Apts.,182,181
s117, Watt Way / 36th Pl.,176,622
s119, Watt Way / Bloom Walk,158,653
s120, Windsor Apts.,257,236
s121, Zemeckis Center,476,474
s137, Gate #2,321,715
s138, 24th St. / Toberman St.,377,64 -
Inconsistent results with SDO_RELATE and boundary conditions
Hello,
I am using SDO_RELATE to find all points in one table with any interaction with a polygon selected from a second table. Pretty basic stuff. I noticed one point which exactly matches a vertex on the query polygon was not getting selected as expected. Experimenting a bit I found if I embedded the polygon geometry in the query (rather than selecting it from its table) the query selected the point in question! Experimenting further I found if I changed the query relation from ANYINTERACT to TOUCH the point in question was not selected. So my 2 questions are:
1) What would cause this to fail when the query polygon is being selected from the table?
2) How can ANYINTERACT be true but TOUCH be false?
Here is the first query that fails:
SELECT a.point_id
FROM point_table a, poly_table b
WHERE a.point_id = <point which matches poly vertex>
AND b.poly_id = <poly_id>
AND SDO_RELATE (a.geom, b.geom, 'mask=ANYINTERACT querytype=WINDOW') = 'TRUE';
Here is the query that works:
SELECT a.point_id
FROM point_table a, poly_table b
WHERE a.point_id = <point which matches poly vertex>
AND SDO_RELATE (a.geom,
MDSYS.SDO_GEOMETRY(2003, 8265, NULL,
MDSYS.SDO_ELEM_INFO_ARRAY(1, 1003, 1),
MDSYS.SDO_ORDINATE_ARRAY(-82.414884, 28.0094323,
-82.387158, 28.0116258, -82.378891, 28.0131216,
-82.377988, 28.0133894, -82.37555, 28.0143994,
-82.329352, 28.0661089, -82.313207, 28.1006725,
-82.362246, 28.1261981, -82.445319, 28.1139363,
-82.428389, 28.0245891, -82.422103, 28.0117697,
-82.421382, 28.0109085, -82.419096, 28.0099741,
-82.414884, 28.0094323)),
'mask=ANYINTERACT querytype=WINDOW') = 'TRUE';
Here is the second query that fails (ANYINTERACT -> TOUCH):
SELECT a.point_id
FROM point_table a, poly_table b
WHERE a.point_id = <point which matches poly vertex>
AND SDO_RELATE (a.geom,
MDSYS.SDO_GEOMETRY(1003, 8265, NULL,
MDSYS.SDO_ELEM_INFO_ARRAY(1, 2003, 1),
MDSYS.SDO_ORDINATE_ARRAY(-82.414884, 28.0094323,
-82.387158, 28.0116258, -82.378891, 28.0131216,
-82.377988, 28.0133894, -82.37555, 28.0143994,
-82.329352, 28.0661089, -82.313207, 28.1006725,
-82.362246, 28.1261981, -82.445319, 28.1139363,
-82.428389, 28.0245891, -82.422103, 28.0117697,
-82.421382, 28.0109085, -82.419096, 28.0099741,
-82.414884, 28.0094323)),
'mask=TOUCH querytype=WINDOW') = 'TRUE';
The point geometry being selected from the point_table looks like this:
MDSYS.SDO_GEOMETRY(2001, 8265, NULL,
MDSYS.SDO_ELEM_INFO_ARRAY(1, 1, 1),
MDSYS.SDO_ORDINATE_ARRAY(-82.445319, 28.1139363))
The metadata for these 2 tables looks like this:
POINT_TABLE
GEOM
SDO_DIM_ARRAY(SDO_DIM_ELEMENT('X', -180, 180, .05),
SDO_DIM_ELEMENT('Y', -90, 90, .05))
8265
POLY_TABLE
GEOM
SDO_DIM_ARRAY(SDO_DIM_ELEMENT('X', -180, 180, .05),
SDO_DIM_ELEMENT('Y', -90, 90, .05))
8265
Both tables have R-tree indexes built.
System is Oracle9i Enterprise Edition Release 9.2.0.5.0 with sdo_version = 9.2.0.5.0
Is it a problem that my points are stored as SDO_ORDINATES? Is the tolerance a factor? Is geodetic data a factor?
Let me know if any other information would be useful and thank you for your help!
JamesI am continuing to struggle with this one. I gave up on the SDO_RELATE function under the assumption the tolerance does not come into play for this function (is this true?).
Now I am trying to use the SDO_GEOM.RELATE function with a tolerance to make this work and it is not working as I would expect.
The following 2 queries show the distance between this point and this polygon is 0 yet they are disjoint. How can this be??
Thanks, James
SQL> SELECT SDO_GEOM.SDO_DISTANCE(
2 MDSYS.SDO_GEOMETRY(2001, 8265, NULL,
3 MDSYS.SDO_ELEM_INFO_ARRAY(1, 1, 1),
4 MDSYS.SDO_ORDINATE_ARRAY(-82.445319, 28.1139363)),
5 MDSYS.SDO_GEOMETRY(2003, 8265, NULL,
6 MDSYS.SDO_ELEM_INFO_ARRAY(1, 1003, 1),
7 MDSYS.SDO_ORDINATE_ARRAY(-82.414884, 28.0094323, -82.387158, 28.0116258,
8 -82.378891, 28.0131216, -82.377988, 28.0133894, -82.37555, 28.0143994,
9 -82.329352, 28.0661089, -82.313207, 28.1006725, -82.362246, 28.1261981,
10 -82.4453185022412,28.1139363297581, -82.428389, 28.0245891, -82.422103, 28.0117697,
11 -82.421382, 28.0109085, -82.419096, 28.0099741, -82.414884, 28.0094323)),
12 10)
13 FROM DUAL;
SDO_GEOM.SDO_DISTANCE(MDSYS.SDO_GEOMETRY(2001,8265,NULL,MDSYS.SDO_ELEM_INFO_ARRA
.00000000000000000000
SQL>
SQL> SELECT SDO_GEOM.RELATE(
2 MDSYS.SDO_GEOMETRY(2001, 8265, NULL,
3 MDSYS.SDO_ELEM_INFO_ARRAY(1, 1, 1),
4 MDSYS.SDO_ORDINATE_ARRAY(-82.445319, 28.1139363)),
5 'determine',
6 MDSYS.SDO_GEOMETRY(2003, 8265, NULL,
7 MDSYS.SDO_ELEM_INFO_ARRAY(1, 1003, 1),
8 MDSYS.SDO_ORDINATE_ARRAY(-82.414884, 28.0094323, -82.387158, 28.0116258,
9 -82.378891, 28.0131216,-82.377988, 28.0133894, -82.37555, 28.0143994,
10 -82.329352, 28.0661089, -82.313207, 28.1006725,
11 -82.362246, 28.1261981, -82.4453185022412, 28.1139363297581,
12 -82.428389, 28.0245891, -82.422103, 28.0117697,
13 -82.421382, 28.0109085, -82.419096, 28.0099741, -82.414884, 28.0094323)),
14 10)
15 FROM DUAL;
SDO_GEOM.RELATE(MDSYS.SDO_GEOMETRY(2001,8265,NULL,MDSYS.SDO_ELEM_INFO_ARRAY(1,1,
DISJOINT -
SDO_RELATE - EQUAL MASK - Different results on the same query
Hello.
I'm trying to find all spatial duplication in the point layer (using certain tolerance). That layer has q-tree spatial index and appropriate tolerance in the user_sdo_geom_metadata table (let's say 1 meter). I have SDO_VERSION=9.2.0.5.0.
To perform that I use SDO_RELATE operator with EQUAL mask (I know that actually I can use other operators but lets consider EQUAL):
SELECT /*+ ordered */t1.OBJECTID, /*+ ordered */t2.OBJECTID from points_table t1, points_table t2 WHERE t1.OBJECTID < t2.OBJECTID
AND sdo_relate (t2.shape, t1.shape, 'mask=EQUAL querytype = JOIN') = 'TRUE'
The problem is:
If I create Q-tree index using SDO_LEVEL=8 query takes 10 minutes and returns lets say 1000 dup events
If I create Q-tree index using SDO_LEVEL=10 query takes 20 seconds and returns lets say 996 dup events
I'm confusing about that - Why the results are depend from SDO_LEVEL? For me it is more important then performanse.
Those missed duplication events are really duplication events (point closer to each other than 1 meter) and SDO_DISTANSE for those particlar poins returns 0. It is correct, but SDO_RELATE monitors that those points are not equal.
So how can I rely on the SDO_RELATE function? What SDO_LEVEL need I use to get correct results? I choosed Q-tree indexes because of performance I didn't get success to get result using R-tree indexes on big datasets at all.
Regarding polylines:
I suppose that I can get similar problem and for polylines (Im also using same query to find dups polylines).
Sometimes SDO_RELATE finds polylines which ones are not really equal in the specified tolerance (1 meter). All cases that I saw it was simple segments which ones share only one vertex but the other ends are spatially disjoint more that 3 meters. Why SDO_RELATE finds such cases as EQUAL?
Thank you very much in advance.Thank you Siva for advice.
I've tried R-tree indexes and got reasonable performance on the tables with ~20k rows.
But when I try to ran that query on the table (points) with 250k rows it takes forever :(.
1) Create index:
Create index nodes_idx on nodes(SHAPE) indextype is mdsys.spatial_index parameters ('LAYER_GTYPE=POINT initial=10m next=5m sdo_rtr_pctfree=10 pctincrease=0');
/* actually 'initial=10m next=5m sdo_rtr_pctfree=10 pctincrease=0' options only decreased slightly performance */
2) Execute query:
SELECT /*+ ordered */t1.OBJECTID, /*+ ordered */t2.OBJECTID
from nodes t1, nodes t2 WHERE t1.OBJECTID < t2.OBJECTID AND
sdo_relate (t2.shape, t1.shape, 'mask=EQUAL querytype = WINDOW') = 'TRUE'
Plan Explanation:
| Id | Operation | Name | Rows | Bytes | Cost |
| 0 | SELECT STATEMENT | | 150M | 1095G| 505M|
| 1 | NESTED LOOPS | | 150M| 1095G| 505M |
| 2 | TABLE ACCESS FULL | NODES | 548K | 2043M| 411 |
| 3 | TABLE ACCESS BY INDEX ROWID| NODES | 274 | 1047K| 505M|
| 4 | DOMAIN INDEX | NODES_IDX | 27416 | | |
As far as I understand, oracle reserved for that query 1095G of memory?! Is it really necessary for that simple query and how can it be possible?
Regards, Denis.
Message was edited by:
Tenek -
R-tree indexing: really 3d now?
Dear all,
after studying the Spatial Reference guide for 11g I am left wondering what the story is with the R-tree index. Does it really consider all three dimensions now? And all you have to do is set the sdo_indx_dims to 3. Does anyone know another reference about this index apart from the spatial reference guide?
Thanks,
B.Check this link for a similar discussion
Re: SDO_RELATE with 3D geometry
The second edition of Pro Oracle Spatial has a good bit of detail on 11g 3d:
http://www.amazon.co.uk/Oracle-Spatial-Database-Experts-Voice/dp/1590598997/ref=sr_1_1?ie=UTF8&s=books&qid=1225907677&sr=8-1 -
How to create spatial query (sdo_relate) on 2 views
Hi, I want to create a spatial query in the form of:
select /*+ORDERED*/ column1,column2
from view1,view2
where sdo_relate(view2.geometry,view1.geometry,'mask= ... ')Both views are very fast and return a smal number of rows out of a large dataset. I would expect that running the spatial query on this selection should be fast but when performing the above query it takes quite some time.
It seems that the spatial query is performed on the underlying tables before the views make their selection.
What is a good way to handle this kind of problem? How to make the spatial query to be executed on the resultset of the views?
thanks ReneHi Udo,
Let me tell you a bit more about the requirements of the application.
We have a table with geometries. Some geometries are buildings, others are roads, trees, parking areas, etc.
We let users specify what geometries they are interested in. This can be the type (tree, building) or a list of types, plus some other selection such as type of tree, name of road etc. Based on the specifications the application creates a view that returns exactly the geometries the user is interested in.
Users may not only be interested in just a tree but may be looking for a tree located inside a building, or a building within a certain distance from a road. This then would be the query I am talking about in this post. Two views and a spatial relationship between them.
Depending on the definition of the views and the data currently loaded the number of rows returned by the views will vary. I can't be there all the time making sure that the correct table is queried first and the correct hints are given. This is why we have the CBO. But it seems to do a poor job when it comes to spatial queries.
Rene -
Mdsys.sdo_relate Problem
Hi!
I'va got two Tables, one of them ("kante") has a Geometry - Column in it and a Quad - Tree Index is
Created, the other one ("kabelabschnitt") is linked to "kante" via a foreign key.
This Query is very fast:
SELECT k.* FROM kante k
where sdo_relate(geom, mdsys.sdo_geometry(2003,NULL,NULL, mdsys.sdo_elem_info_array(1,1003,3), mdsys.sdo_ordinate_array(34520, 253535, 34621, 253606)), 'mask=ANYINTERACT querytype=window') = 'TRUE';
But this takes about 20 s:
SELECT k.*, ka.* FROM kante k, kabelabschnitt ka
where ka.id_ka = k.id_kante
and sdo_relate(geom, mdsys.sdo_geometry(2003,NULL,NULL, mdsys.sdo_elem_info_array(1,1003,3), mdsys.sdo_ordinate_array(34520, 253535, 34621, 253606)), 'mask=ANYINTERACT querytype=window') = 'TRUE';
Can anynone tell me why??
Thanx in advance,
JHi,
It could be slower because the optimizer is choosing to use an index associated
with the join key between the tables instead of the spatial index.
Try adding the /*+ no_index (, index_name) */ hint, i.e.
SELECT /*+ no_index (K name_of_id_kante_index) k.*, ka.*
FROM kante k, kabelabschnitt ka
where ka.id_ka = k.id_kante
and sdo_relate(geom, mdsys.sdo_geometry(2003,NULL,NULL,
mdsys.sdo_elem_info_array(1,1003,3),
mdsys.sdo_ordinate_array(34520, 253535, 34621, 253606)),
'mask=ANYINTERACT querytype=window') = 'TRUE';
Hope this helps,
Dan -
Problem with trees and memory handling.
Hi there, I just want to know if, when I create a large binary tree, and I re-"pointed" the root pointer to another node somewhere below in that same tree (say, a terminal node), will the "upper" parts of the tree (starting from the new root node) be removed/deleted from memory? Please explain your answers.
Thank you.f I changed the root to B, will A and its children be
deleted from memory?If you do root = B, AND if nothing else is referring to A or C or anything else beneath them, then A, C, and all of C's children will become eligible for garbage collection.
Whether the memory actually gets cleaned up is something you can't really predict or control, but it doesn't really matter. If it's needed, it will get cleaned up. If it's not needed, it may or may not get cleaned up, but your program won't care.
So, in short, yes, for all intents and purposes, A's, C's, and C's descendants' memory is released when you re-root to B. -
How to blick tree view few specific nodes
here i got a code which show how to blink tree view node but i am confuse that how to blink few node.
Answered by:
Avatar of Tamer Oz
20,185
Points
Top 0.5
Tamer Oz
Partner Joined Sep 2009
2
8
17
Tamer Oz's threads
Show activity
Treeview control - How to make a node blink?
Visual Studio Languages
.NET Framework
>
Visual C#
Question
Alert me
Question
Vote as helpful
0
Vote
Hi,
Is there a "elegant" way to make blink a treeview node?
I am thinking to use a timer with the collection of nodes that I want to make the blink effect, and update the icon ...
Friday, November 06, 2009 6:19 PM
Reply
|
Quote
|
Report as abuse
Avatar of Kikeman
Kikeman
R. BOSCH
105 Points
All replies
Question
Vote as helpful
0
Vote
Hi,
You can develop your custom control for this purpose. The logic you mentioned was correct. Here is a sample control that I developed by the logic you mentioned.
public class BlinkingTreeView : TreeView
private Timer t = new Timer();
private List<TreeNode> blinkingNodes = new List<TreeNode>();
public BlinkingTreeView()
t.Interval = 1000;
t.Tick += new EventHandler(t_Tick);
bool isNodeBlinked = false;
void t_Tick(object sender, EventArgs e)
foreach (TreeNode tn in blinkingNodes)
if (isNodeBlinked)
//update Icon
tn.Text = tn.Text.Substring(0, tn.Text.Length - 1);//to test
isNodeBlinked = false;
else
//update Icon
tn.Text = tn.Text + "*";//to test
isNodeBlinked = true;
public void AddBlinkNode(TreeNode n)
blinkingNodes.Add(n);
public void RemoveBlinkNode(TreeNode n)
blinkingNodes.Remove(n);
public void ClearBlinkNodes()
blinkingNodes.Clear();
public List<TreeNode> BlinkingNodes
get { return blinkingNodes; }
public int BlinkInterval
get { return t.Interval; }
set { t.Interval = value; }
public void StartBlinking()
isNodeBlinked = false;
t.Enabled = true;
public void StopBlinking()
t.Enabled = false;
just show me how to use BlinkingTreeView class. i will have tree view which will have few node and few nodes may have few child nodes. now how to achieve by this class BlinkingTreeView and show me how to blink few specific node not all. thanksbetter to come with code. first populate tree view with some dummy node this way
Root
Child1
Child1-sub1
Child1-sub2
Child2
Child2-sub1
Child2-sub2
now blink Child1-sub2 & Child2-sub1. please come with code. thanks -
Hey,
Using the arrows, when I open one tree node, I want other
tree nodes to close. I saw a sample that sepiroth had done, but I
don't want to click on the whole bar. I just want to use the arrows
to expand and contract. Any help would be great. I have attached
the codeIf you just wish to make a duplicate of one hard drive to another hard drive in the same G5, then do this:
Clone using Restore Option of Disk Utility
Open Disk Utility from the Utilities folder.
Select the destination volume from the left side list.
Click on the Restore tab in the DU main window.
Check the box labeled Erase destination.
Select the destination volume from the left side list and drag it to the Destination entry field.
Select the source volume from the left side list and drag it to the Source entry field.
Double-check you got it right, then click on the Restore button.
Destination means the second internal drive. Source means the internal startup drive. -
How can I display and change built-in symbols of a tree control programmatically?
I want to set the built-in symbols of a tree control during runtime.
I only found an example to assign custom pictures but not how to select one of the 40 built-in symbol.
Many Thanks
Solved!
Go to Solution.The ActiveItem.SymbolIndex will allow you to select the symbol for the active item. You can use the ListBox Symbol Ring Constant (Dialog and User Interface palette) to select a symbol (or you can just enter the number directly if you know what it is).
Message Edited by smercurio_fc on 07-10-2008 09:36 AM
Attachments:
Example_VI_BD6.png 2 KB -
How can I create a Tree with Color Picker icons?
I'm a newbie to Flex. I want to create a tree which has color
picker icons.
As an analogy for the Mac users out there, I envision a
control like the Calendars section in iCal, where you can specify
the color for each individual node. These colors are then used in
other parts of the application.
The Flex 3 documentation specifies four methods for setting
node icons on a Tree control, none of which seems to suit my needs:
-The folderOpenIcon, folderClosedIcon, and defaultLeafIcon
properties
-Data provider node icon fields
-The setItemIcon() method
-The iconFunction property
In other words, I want to "setItemIcon" to an mx:ColorPicker,
if that makes any sense.
Is there a standard way of doing this? If not, how can I go
about implementing such a control? Thanks in advance!well, Network UI should be used.
-
I have a tree with 3 level and it is working fine.. In view mode I need the First child value of the 3rd level with out clicking / Selecting from teh Tree node..
for eg;
A -- ist level
Ap -- 2nd level
Apple -- 3rd level
So What I need is that I should get a message 'Apple' While landing teh Form itself without clicking on teh Tree
Thanks in Advance...To my knowledge it is not possible to get the value of a node which is not selected.
What you have to do is to build up a memory structure similar to your tree, then you can access any node at any time.
Peter -
I have a HTML page with an IFrame. Inside the Iframe there is a table with a tree view
<iframe>
<table>
<tr>
<td>
<treeview id="tv1"></treeview>
</td>
</tr>
</table>
</iframe>
In UIA, i am able to traverse till the tree view but not able to see it.
I have used the TreeWalker.RawViewWalker Field to traverse the node from the desktop Automation.RootElement.
I tried to use AutomationElement.FromPoint method to check whether i am able to get that element. Fortunately i was able to get the automation element.
i tried to get the path to root element from the node element using the TreeWalker.RawViewWalker. I was able to get the parent path to the root element.
But trying the reverse way like navigating from root element to tree node, was not getting the element for me.
Please help me with suggestions or inputs to resolve this issue.Thanks Bernard,
It works fine with JInitiator but not working with
the JPI. For JPI what settings I need to do ??hi TKARIM and Bernard, i am having similar problem even with the Bernard's recommended setup. could you post the webutiljini.htm (i presume you are using config=test) ?
i am actually using jinitiator 1.3.1.28 with Oracle HTTP Server of OAS 10gR2) calling Forms Server 6i (f60cgi). After setting up according to Bernard's recommended setup steps, the java console showed that it loaded the icon jar file when it could not read the form, but it skipped the loading of the icon jar file once it read and started the form. How do we specify in the form to pick up the icon from the jar file instead from a directory ? Or do we need to specify ? Any ideas ?
Thx and Regards
dkklau
Maybe you are looking for
-
Ipad 1 and iOS5 find my iPad no longer working
Since upgrading to iOS5 my iPad 1 can't be found using "Find my iPad" via iCloud. The find option is switched on in the settings panel, and location services are also on. There's no problem with finding my location on the map though, so I don't think
-
Use Export PDF to Convert WordPerfect
I subscribe to Export PDF. It converts virtually any format to PDF except for WordPerfect Corel ".wpd" format. I can do the conversion from within WordPerfect. Except my 160-page document, containing a couple of pages of .gif text will not convert
-
Datapump for 8i to 10g upgrade
Is there any way to use the oracle 10g datapump to take an export of oracle 8i database and import it in 10g database.
-
Revision: 15515 Revision: 15515 Author: [email protected] Date: 2010-04-16 12:36:02 -0700 (Fri, 16 Apr 2010) Log Message: Extend unit tests for NetStreamSwitchManager. Remove unreachable code. Modified Paths: osmf/trunk/framework/OSMF/org/
-
Using X,Y coordinates from file to draw in Illustrator
Hello, I am doing some clothes pattern making and I am interested in using a list of X,Y coordinates to create and label a set of points on the artboard. I then wish to adjust for size changing only my XY list and get a changed shape? Right now I h