POST
|
I'm not familiar with SDE in Oracle so I can't comment specifically on that. However, I can tell you that an OBJECTID is not guaranteed to be larger than the previously added record. If multiple processes are writing to the table, one process could reserve a slice of OBJECTIDs for itself. Then, if a second process starts adding records before the first one is done, the lower OBJECTIDs of the first process will be intermixed with the higher OBJECTIDs of the second process.
... View more
07-27-2017
07:56 AM
|
1
|
0
|
927
|
POST
|
Joshua Bixby you are correct, it returns the next ObjectID. You would therefore need to subtract 1 in order to get the last returned ObjectID. This returns the largest OID that has ever been used in the table. However, it doesn't guarantee that the OID is still present or has ever been used. If you want the largest currently in use, then simply sort your table by ObjectID. SELECT OBJECTID
FROM owner.mytable
ORDER BY OBJECTID DESC
OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY;
... View more
07-26-2017
01:45 PM
|
0
|
0
|
1795
|
POST
|
There's no simple stored procedure to call. But essentially, the last OID is stored in a lookup table that uses the tables registration id (e.g. data_owner.i10). The following code can be used in SQL Server with SDE 10.4 to retrieve the last ObjectID: DECLARE @owner nvarchar(128) = 'data_owner',
@table nvarchar(128) = 'MyTable';
DECLARE @regid int;
SELECT @regid = registration_id
FROM sde.SDE_table_registry
WHERE owner = @owner AND table_name = @table;
DECLARE @sql nvarchar(1024);
SET @sql = 'SELECT base_id FROM ' + @owner + '.i' +cast (@regid AS VARCHAR(10)) + ' WHERE id_type = 2';
EXECUTE sp_executesql @sql;
... View more
07-26-2017
01:21 PM
|
0
|
4
|
1795
|
POST
|
As the OBJECTID field is used by ArcGIS as an internal unique primary key field, it is protected from manual editing and is instead automatically assigned by internal processes within ArcGIS (see What is an ObjectID?—Help | ArcGIS Desktop). This field is meant to be unique within the table in question, and copying the OID across tables would make it possible for duplicates to exist. Therefore, this isn't possible. Even when editing directly within a database engine (outside ArcGIS), one must use the correct procedures to generate unique OIDs (see Next_RowID—Help | ArcGIS Desktop ).
... View more
07-25-2017
02:08 PM
|
1
|
6
|
1795
|
POST
|
I have an old project where I built an accessible map including clicking on the map using the keyboard. The gist of our approach was: If a user uses the tab key to focus the map, we activate a special mode that includes Instructions on using the keyboard to navigate the map A cross-hair that serves as the click location (activated via enter key) We deactivate the default keyboard map panning and wrote our own functions to avoid the necessity of having the mouse over the map. Non-sighted users were accommodated by providing a search bar as an alternative to the map. The map itself is hidden (using aria-hidden) and the popup content is captured and displayed outside the map. This allows screen readers to get access to the popup content. Links to a demo and the code are below (this was experimental and is no longer maintained, so not everything works): Demo: http://apps.esri.ca/CanadianMunicipalities/MunicipalServices/ Code: GitHub - EsriCanada/municipal-government-services
... View more
07-13-2017
12:24 PM
|
0
|
0
|
881
|
POST
|
The reason for the erratic behavior is event recursion, which is essentially an infinite loop of events calling themselves over and over again. Remember that within your initExtent function, when you set the extent programatically, this will cause an extent-change event to be dispatched on each of those maps. This in turn calls the initExtent function again, which cause new extent-change events, and the cycle continues forever (or until your browser kills the script). The trick to fix this is to determine whether an update is actually needed inside the initExtent function or whether this is just a result of programatic extent changes. Here's one way you could approach this with 3 maps: var extentChanged = function(newExtent) {
var changed = false;
if (lastExtent === undefined ||
newExtent.xmin !== lastExtent.xmin ||
newExtent.ymin !== lastExtent.ymin ||
newExtent.xmax !== lastExtent.xmax ||
newExtent.ymax !== lastExtent.ymax) {
changed = true;
}
lastExtent = newExtent;
return changed;
}
var synchronizeMaps = function(event) {
if (extentChanged(event.extent)) {
lastExtent = event.extent;
var id = event.target.id;
if (id != "map1") {
map1.setExtent(event.extent);
}
if (id != "map2") {
map2.setExtent(event.extent);
}
if (id != "map3") {
map3.setExtent(event.extent);
}
}
}; I've made a fully functional demo in JSFiddle: Multiple Synchronized Maps - JSFiddle
... View more
07-13-2017
08:14 AM
|
1
|
0
|
475
|
POST
|
Hi Bhavin, I would suggest generating a token with a longer life if you can. This is by far the easiest way to go about keeping a custom "session" active. However, if you absolutely must keep the solution running beyond the lifespan of a token that you manually added, then read-on. Please note however that this is a hack and is not supported. I make no warranty of fitness or completeness of any kind, express or implied; proceed at your own risk. The first thing to understand is that the token is stored in multiple places, all of which are maintained by the Identity Manager. Tokens are stored in the Identity Manager for new layers, and is stored in each layer for use in new queries. This is in addition to any tasks (e.g. QueryTask) that you have setup. If you want to continue using the map after the token has expired, you will need to supply a new token to these objects. Otherwise, attempting to update any existing layers or add a new layer will cause a login popup to show up. Secondly, the Identity Manager will automatically attempt to refresh your token once it expires through a timer. The code below applies to the 2.x API. Updating the Identity Manager's Token You can access the token, expires, and creationTime properties of your credentials to update them. An example is shown below: //Loop through the credentials array
IdentityManager.credentials.forEach(function(creds, i) {
//Look for the server whos credentials you want to update
if (creds.server === myServer) {
//Update the credentials
//(result would be your token object previously obtained)
IdentityManager.credentials[i].token = result.token;
IdentityManager.credentials[i].expires = result.expires;
IdentityManager.credentials[i].creationTime = result.creationTime;
}
}); Cancel the automated refresh of the credentials Each credential item in the Identity Manager has a timeout which will trigger a token refresh upon expiration. Below is an example of how to cancel this timer. //Loop through the credentials array
IdentityManager.credentials.forEach(function(creds, i) {
//Ensure the credentials are for my server
if (creds.server === myServer) {
//Cancel the timer
clearTimeout(creds._refreshTimer);
}
}); Update tokens in layers Updating the Identity Manager does not update the layers (and tasks), so you have to do that manually. //Retrieve the layer object
var layer = map.getLayer("myLayerID");
//Update the layer's credentials
//(result is the previously obtained token)
layer.credential.token = result.token;
layer.credentials.expires = result.expires;
layer.credentials.creationTime = result.creationTime;
... View more
01-26-2017
06:18 AM
|
2
|
1
|
1289
|
POST
|
Try adding f: "json" to your datas object. ArcGIS for Server usually defaults to HTML unless specified otherwise. This parameter will tell ArcGIS to serve the results as JSON (f stands for format).
... View more
04-25-2016
11:37 AM
|
0
|
0
|
2281
|
POST
|
The only time I get a 400 error is when I have a malformed URL. Are you sure you have the parameters in the URL correctly set (starting with a question mark, separated by an ampersand)? Also, if you are sending a POST request instead of a GET request, the parameters need to be passed as data, not in the URL. Otherwise, I would suggest to: login to your rest directory browser to the folder your are attempting to retrieve add the ?token= parameter to the URL and navigate to the page, it should keep working add the &f=json parameter to the URL and navigate again, it should keep working change the token to invalidate it and navigate to the page, you should get an error object.
... View more
04-25-2016
10:33 AM
|
0
|
0
|
2281
|
POST
|
You should also be storing the tokens expiration in the local storage, this would allow you to first check whether it is expired without making a network request. As for validating with ArcGIS for Server/ArcGIS Online, try fetching the definition of a secured service of folder. For example: https://www.mydomain.com/arcgis/rest/services/securedService/FeatureServer?f=json&token=%token goes here% If the token isn't valid, you'll get the following response: {"error":{"code":498,"message":"Invalid Token","details":[]}}
... View more
04-22-2016
10:12 AM
|
1
|
2
|
2281
|
POST
|
These layers are Subscriber Content, you'll find their ArcGIS Online descriptions at: http://www.arcgis.com/home/group.html?owner=esri&title=Live%20Feeds You can consume these from ArcGIS Online web maps, and hosted apps (such as Web App Builder) as long as you are logged in. You should also be able to access these from ArcGIS Pro, ArcMap, etc through their respective interface to ArcGIS Online (again, as long as your are logged in). If you want to use these in custom applications, check this blog post for more details: Using subscriber content in Web Apps and Story Maps | ArcGIS Blog Also, a quick note, the token requested by that REST endpoint your provided a link to, it can be generated through the ArcGIS for Developers site.
... View more
04-22-2016
09:58 AM
|
1
|
0
|
631
|
POST
|
Sorry, I don't have any other suggestions. When I ran into the problem, we had to open a support case with Esri Inc. (I work for an international distributor). Turned out to be that the ArcGIS Online SSL Checker wasn't recognizing a specific chain in our certificate. If you're interested, here's the bug report (BUG-000084659 - When a web server uses GoDaddy certificates, it do..).
... View more
04-21-2016
12:30 PM
|
1
|
2
|
699
|
POST
|
The few times I've seen this, its either: ArcGIS Online not recognizing the certificate (even if your browser says it's secure) You are using Web Tier Authentication instead of the default GIS Tier authentication on your ArcGIS for Server. If its an SSL issue, I would suggest getting in touch with support (or your local distributor) as this is likely to be specific to your implementation and will require some digging.
... View more
04-21-2016
11:46 AM
|
0
|
4
|
699
|
POST
|
Yes to both questions, the JavaScript API can consume both secure and unsecure WebSocket and ArcGIS for Server with GeoEvent Extension can serve both. GeoEvent will serve the Stream Service according to your ArcGIS for Server security settings. Therefore if HTTPS is enabled for your Map Services, a WSS connection will be available with the Stream Service. On the other hand, if only HTTP is enabled for your Map Services, only a WS connection will be available.
... View more
04-21-2016
11:31 AM
|
1
|
0
|
761
|
POST
|
If you are printing on a different server than the one hosting your data, make sure the printing server has access to the layers in the hosting server. Also, if you are using the proxy to authenticate yourself with the layers, you will not be able to print this layers as the printing server will not be authenticated.
... View more
04-21-2016
08:27 AM
|
0
|
1
|
318
|
Title | Kudos | Posted |
---|---|---|
1 | 04-21-2016 11:31 AM | |
1 | 01-15-2021 06:27 AM | |
1 | 01-18-2021 06:53 AM | |
1 | 01-15-2021 07:08 AM | |
1 | 04-22-2016 09:58 AM |
Online Status |
Offline
|
Date Last Visited |
08-15-2024
06:21 PM
|