POST
|
Hi all, I'm currently developing an application that allows users to draw geometry on a map, and then this geometry is used to search against a point feature class stored in Oracle SDE (st_geometry). Am I correct in say that when using the query/querytask functionality and supplying a search geometry, ArcGIS Server will query the layer for any points that intersect the _envelope_ of the search geometry, and then do the intersect itself in memory? The reason I ask is that when a user draws any geometry which has an extent far bigger than the geometry itself (for example a diagonal line), we are noticing serious performance hits when attempting to run the query. I'm not even referring to displaying the results - just running the query against the map service endpoint is slow. While the dataset that is being queried is big (3 million records), a search will often only return 1000 points, which I think is a reasonable amount. But it can take up to 2 minutes for this query to execute and the results to be returned. Are there any improvements I can make or functionality I could implement which might help me to speed up the query? Cheers. Steve
... View more
12-15-2013
11:18 PM
|
0
|
0
|
388
|
POST
|
I am running queries against a map service hosted in an ArcGIS Server 10.1 SP1 environment, which consists of a feature class that is joined to two attribute tables. All of the data is hosted in SDE (Oracle 11g R2). The problem I have is these queries are being run in memory rather than in Oracle, and for this reason are running much more slowly than I would like. It seems to be dependent on which join I create first when constructing the MXD - queries against attributes in the first join will run in Oracle; queries against attributes in the second join will run in memory. Is this by design, or am I doing something wrong? Further background/example: I have a large feature class stored in an Oracle SDE geodatabase that has foreign key relationships to two attribute tables also stored in SDE. An example scenario is: COUNTRIES
========
ObjectID
Name
Currency_ID
Language_ID
Shape CURRENCIES
=========
Currency_ID
Currency_Name LANGUAGES
=========
Language_ID
Language_Name In the above example, countries is the feature class, and currencies and languages are additional attribute tables. It is a many-to-one relationship between countries and currencies/languages. Eg both Portugal and Brazil speak Portugese, and both Belgium and France use the Euro. In my MXD, I have created a join between the countries feature class and the currencies table, and the countries feature class and the countries table. I have experimented with using both "keep all records" and "keep only matching records". If I create the languages join first, and then the currencies join, when I use the arcgis rest API: http://server/arcgis/rest/services/countries/MapServer/0/query and specify the where clause as "WHERE languages.Language_Name = 'Portugese'" I can trace the query being run against the database as: SELECT
ObjectID,
Name,
Currency_ID,
Language_ID,
Shape
FROM countries
LEFT OUTER JOIN languages ON countries.language_id = languages.language_id
WHERE (languages.Language_Name = 'Portugese') This is very efficient, and exactly what I want. BUT, when I try to query on currencies, for example 'WHERE currency.currency_name = 'Euro', tracing the query being run against the database returns: SELECT
ObjectID,
Name,
Currency_ID,
Language_ID,
Shape
FROM countries
LEFT OUTER JOIN languages ON countries.language_id = languages.language_id Followed by: SELECT
Currency_ID
FROM currencies
WHERE (currency.currency_name = 'EURO')
AND (Currency_ID IN 1,2,3,4,5,7,8,24,44)
It appears that ArcGIS Server is querying all records for the first join against countries, and then doing an in memory join for matching records in the second join against currencies. This is terribly inefficient, and is going to make the query run very slowly, as compared to running the query in oracle which would run almost instantly thanks to indexing etc. If I change around the order of the joins in the mxd so that I created a join against currencies first and then languages, the reverse is observed: querying currencies will run the query entirely against oracle, but querying languages appears to do the join in memory. Is there any way I can configure my MXD or queries against the REST API so that it will do the queries in Oracle rather than in memory? Thanks in advance for any help!
... View more
08-28-2013
01:06 AM
|
0
|
0
|
613
|
POST
|
Thanks guys - adding in the schema and table name to the query returns the expected results. Steve
... View more
05-28-2013
05:45 PM
|
0
|
0
|
464
|
POST
|
Hi, I'm playing with the unique renderer generator function in the JS API, but appear to have hit a issue with my rest service. I've created a map service which consists of a point feature class that is joined to a non-spatial "work table", with the rule set to only keep matching values. When I attempt to call the "Generate Renderer" function on the feature class in question (loaded through arcgis/rest/services/... ), I receive the error (spelling mistake included): Error generating uniqeValues. The server log contains the following text: <Msg time='2013-05-24T16:19:20,443' type='SEVERE' code='10819' target='xxx/xxxSearch.MapServer' methodName='MapServer.REST.GenerateRenderer' machine='SV-BASHFUL.xxx.LOCAL' process='5984' thread='4744' user='null' >Missing parameter: Error generating unique values</Msg> If I remove the join and publish the service, using the same parameters, I do not receive the error and get the expected results. Am I missing some parameter, or is there a limitation on using the renderer with map services that contain joins? For reference, the parameter I am providing to the classification definition is: {"type":"uniqueValueDef","uniqueValueFields":["UNIQUE_FIELD"],"fieldDelimiter": ",","baseSymbol":{"type": "esriSFS","style": "esriSLSSolid","width":2},"colorRamp":{"type":"algorithmic","fromColor":[115,76,0,255],"toColor":[255,25,86,255],"algorithm": "esriHSVAlgorithm"}} Thanks. Steve
... View more
05-24-2013
12:32 AM
|
0
|
3
|
1484
|
POST
|
Thanks Vince, I saw that note but the document doesn't specify 10.1 as an affected version so I wasn't sure if it is still relevant. I'll contact ESRI and see what they say. Steve
... View more
05-20-2013
07:15 PM
|
0
|
0
|
606
|
POST
|
Vince, I understand the query is inefficient (I just arbitrarily picked some values) but when I run that query the explain plan shows that it is indeed using the index, and my question is still the same - I get "(sel: default - undefined)" for the selectivity and I'm trying to confirm whether this is a problem? Please see below. [ATTACH=CONFIG]24527[/ATTACH] Could you please confirm whether this is an issue, as described in the ESRI help page at: http://support.esri.com/en/knowledgebase/techarticles/detail/32594 Thanks. Steve
... View more
05-20-2013
05:51 PM
|
0
|
0
|
606
|
POST
|
Hi, Would somebody please post their explain plan for the following statement on a 10.1 SDE install running on an Oracle 11gR2 instance? I'm keen to know whether this domain index is the cause of our poor performane, or whether other users get the same output from an explain plan.
SELECT OBJECTID
FROM FEATURE_CLASS
WHERE SDE.ST_EnvIntersects (SHAPE, -90, -90, 90, 90) = 1 Thanks. Steve
... View more
05-20-2013
12:29 AM
|
0
|
0
|
606
|
POST
|
We have a point feature class with approximately 800,000 features loaded into a 10.1 SDE environment (Oracle 11gR2). I have noticed very poor performance compared to the the 9.3 environment we initially used. On examining the explain plan being used when ArcMap is attempting to display these points, I noticed that the domain index seems to be using an undefined "selectivity", as per the attached screenshot. [ATTACH=CONFIG]24315[/ATTACH] Reading online, ESRI seems to suggest that this situation should never eventuate (although it does not mention 10/10.1 for affected software). See: http://support.esri.com/en/knowledgebase/techarticles/detail/32594 It appears that we have this same poor performance on multiple database servers, and dropping and rebuilding the index does not seem to resolve the issue. Has anybody got any suggestions or noticed similar behaviour in their environment? Thanks. Steve
... View more
05-14-2013
11:30 PM
|
0
|
5
|
2318
|
POST
|
102 views of this post but as yet no response. Hopefully someone out there can point me in the right direction? Steve
... View more
03-28-2013
05:03 PM
|
0
|
0
|
117
|
POST
|
Hi, We are in the process of developing a new AGS application, and one of the requirements is to show the legend in a popup window (window.open - not a dijit window). I've written the code to show the popup, and it works fine in all browsers, but when I try to attach to the "OnUpdateEnd" event of the map to refresh the legend, it only seems to work in Chrome. In Internet Explorer (I'm testing on version 😎 the legend is not updated, and when debugging using the IE Developer Tool I get a "JScript object expected" error. I've attached a zip file with a demo of the problem, and any assistance would be greatly appreciated. The only requirement I have is that I have to use a separate html page for the popup as additional information is displayed on this window (for clarity I have removed it in this example). Apart from that requirement, I'm more than happy to refactor the code as much as possible to resolve this issue. Thanks. Steve
... View more
03-26-2013
06:43 PM
|
0
|
1
|
438
|
Online Status |
Offline
|
Date Last Visited |
11-11-2020
02:24 AM
|