POST
|
Consider the asynchronous operations of stopAsync with a addLocalServiceStopCompleteListener event to load the rasters, and the startAsync with a addLocalServiceStartCompleteListener event to keep your app responsive. You're right, and after some time, I was able to implement a solution with asynchronous operations ! It's much better for user as it can take some time to load DTED or CADRG Tiles... my code allows user to select one folder, then all tiles contained in subfolder are loaded automaticaly by package of maximum X tiles, where X depends of number of layers/datasources in my Blank Map Package. Inconvenient is performance, as 1 local server process is running for each package, in my case 14 processes for 160 DTED tiles. Does this not work if you stop the service for all work space creation/file loading? Have you tried using the geodatabase connection method to persist loaded rasters on app restart? I also tried to use another solution : I definitly can only start a local service once with several workspace info, then on start completed add several dynamic layers and for each layer, define the datasource on layer initiliazed completed event, in order to add my tiles... however, it's not working all fine at this time, as I got error message when I try to load to much tiles ... I'm still looking at this, but hope it can be a better solution, as it definitly use less memory with only one process. also, in my case I can't use geodatabase / ESRI specific data format, so no geodatabase. we persist our map configuration by serialization. (in fact, I would need to be able to create new geodatabase, then generate Mosaic Dataset with my local tiles - all this by Geoprocessing Package with ArcGIS Runtime... but I guess I need some Tools to be authorized for ArcGIS Runtime first)
... View more
09-11-2013
07:48 AM
|
0
|
0
|
332
|
POST
|
This kind of symbols are definitly needed (as multi-layer symbols), in order to be able to show "movement" and/or "communication" between geolocation on our map (situational maps). So we would like to be able to use Line Direction one/both ways... In our case, symbology is defined in SLD file and we need to be able to define start/end as arrow, circle, square, ... (sld stroke-linecap property for example) the issue with drawing our own triangle is regarding the map scale... when user zoom in/out, it will not looks nice. So we truly hope this will be include in the next release 10.2 🙂
... View more
08-30-2013
06:07 AM
|
0
|
0
|
295
|
POST
|
Will it be possible to use 3D View (Scene and/or Globe viewer) with next release 10.2 ? if not, is it planned for near future ? this was mention as a "coming soon" capacity here. It's strongly expected as we don't want to go back with ArcGIS Engine - ArcObjects development...
... View more
08-28-2013
04:47 AM
|
0
|
6
|
2915
|
POST
|
The best solution for this issue would be to be able to use geoprocessing on DTED raster "Set Raster Properties", in order to define new Min/Max statistics for each raster tile, but it's unsupported by ArcGIS Runtime at this time. However, as I needed at least a temporary solution, I was able to compute general statistics on several DTED in order to look at min/max/average/stand dev. values. In fact the "Set Raster Properties" generates 2 xml files for each DTED with lot of informatons, but what I was looking is pretty simple :
<PAMDataset>
<PAMRasterBand band="1">
<Metadata>
<MDI key="STATISTICS_MINIMUM">0</MDI>
<MDI key="STATISTICS_MAXIMUM">8850</MDI>
<MDI key="STATISTICS_MEAN">500</MDI>
<MDI key="STATISTICS_STDDEV">600</MDI>
</Metadata>
</PAMRasterBand>
</PAMDataset>
So now I'm using an xml template with this few lines, and prior to load dynamicaly my DTED, I copy this template file for each DTED (.dt0, .dt1 or .dt2) with the extension .aux.xml. (n40.dt0 -> n40.dt0.aux.xml) This little trick is working fine and ArcGIS Runtime can apply homogenuous rendering for all loaded DTED tiles ! (of course, these statistics values should be calculated dynamicaly... but no geoprocessing tool is supported to do that at this time) [ATTACH=CONFIG]26875[/ATTACH]
... View more
08-22-2013
12:50 AM
|
0
|
0
|
314
|
POST
|
The problem is that I don't see how I can manage to use ArcGISImageServiceLayer, because I need to add dynamicaly several DTED raster files, but this class doesn't have getDynamicLayerInfos() function (as in sample Add Raster) the sample is surely working fine with online image service, but once again I'm in disconnected scenario with only local files... I don't want to prepare a Map Package with my raster, I need to load them dynamicaly... do you think it's possible with ArcGISImageServiceLayer ?
... View more
08-13-2013
12:41 AM
|
0
|
0
|
314
|
POST
|
In fact I was trying to add blank layers, when the blank map Package only need to contain blank Group Layer. So If I add 10 "new Group Layer" and create my blank Map Package, then I can add 10 rasters by changing the 10 corresponding datasources. issue resolved ! In same time, thanks to ESRI support, I found another way to use only one process RuntimeLocalServer.exe, and I'm able to load multiple rasters from same or different locations (very useful in my case to directly load DTED files which are organized in subfolders). for that, you just need to instantiate and start the Local Map Service before calling the addRaster() method, like this : // create a local map service and enable dynamic layers
LocalMapService localMapService = new LocalMapService(resourceMPKFile);
localMapService.setEnableDynamicLayers(true);
localMapService.start();
// Iterate on all files to add them with new WorkspaceInfo
// pass the Local Map Service here as parameter
for (File file: fileList) {
addRaster(file.getName(), file.getParent(), transparency, localMapService);
}
Then in the addRaster() method, you just need to stop/restart the service, and it will add a new workspace info private void addMultipleRaster(final String fileName, final String fileDir,
final int transparency, final LocalMapService localMapService) {
// First stop the service
localMapService.stop();
// get dynamic workspaces from service
WorkspaceInfoSet workspaceInfoSet = localMapService.getDynamicWorkspaces();
// an arbitrary unique string
final String workspaceId = ""+count++;
// create a workspace info via the static method according to data type
// e.g. raster folder connection
WorkspaceInfo workspaceInfo = WorkspaceInfo.CreateRasterFolderConnection(workspaceId, fileDir);
// also:
// --> WorkspaceInfo.CreateSDEConnection
// --> WorkspaceInfo.CreateShapefileFolderConnection
// --> WorkspaceInfo.CreateFileGeoDatabaseConnection
// Add this one raster workspaceInfo to the set of workspaces
workspaceInfoSet.add(workspaceInfo);
// set dynamic workspaces for our local map service
localMapService.setDynamicWorkspaces(workspaceInfoSet);
// now (re)start the service...
localMapService.start();
... In this case, we can use the initial blank Map Package with only one default group layer.... seems to work fine, but it can take some time, because of the stop/restart issue for each file. and I still need to perform stress test on this solution...
... View more
07-12-2013
07:05 AM
|
0
|
0
|
332
|
POST
|
To continu previous discussion... I would like to create a "blank mpk" with 10 sub layers (more than 1 is my concern), instead of only one today... So when creating my dynamic map service layer, for each sub layer I can update the dynamic layer infos to point to my Raster datasource (10 rasters from same directory). I was able to create a blank MPK with 1 sub layer, because it's just an empty map. But how can I prepare additional empty sub layers in ArcMap ? Thanks for your help...
... View more
07-08-2013
12:23 AM
|
0
|
0
|
332
|
POST
|
Thanks Carlos for these additional information... thanks to your inputs and more advanced tests and understnading of the Vehicle Commander application, I'm now able to do what I want. For labels, I didn't understand the min/maxScale issue from Json type file. Same thing for ChemLight, it took me a while to understand that we can maange our own file type, as it is done on the application (afmchemlight, etc.) I guess more questions will come with advanced development, but I really hope ESRI will provide more documentation in the future (maybe for 10.2 this summer ?), and maybe a dedicated Training course 🙂
... View more
07-05-2013
06:20 AM
|
0
|
0
|
1309
|
POST
|
Yes, it's the only documentation I have... but still I'm missing info. For example, some additional information are specific and I don't know how to set these values. my illustration is an Area symbol "Weapons Free Zone H" and at predefined scale, it display labels on the polygon. in this case it's "Time From" and "Time To". [ATTACH=CONFIG]25681[/ATTACH] So in the MIL2525 documentation - page 496 - the template indicates that there are 3 parameters "T", "W" and "W1"... but how can I set values for these and send it with the message so time from/to can be displayed ?? - page 41 - (5.5.2.6), there's an explanation for Date-Time group (for my "W" and "W1" info), with short format DDHHMMZMONYY, but what Message Property Name can I use ?
... View more
07-03-2013
01:10 AM
|
0
|
0
|
1309
|
POST
|
Thanks again for your fast reply. There are multiple labels you can put on symbols. I believe one of them is with the AdditionalInformation field on the Esri Message. Do you have any sample code for this ? I don't understand what I'm doing wrong.... if I add the line : message.setProperty("AdditionalInformation", myStringLabelHere); there is no label at all on my map... but it's working for the sample MessageProcessorApp which load an XML file with similar Property names. This is bad nomenclature on ESRI's part. The key difference though is Position Report is typically used for friendly forces that will be report there locations. Spots reports are other observed entities (usually hostile though they don't have to be) or actions that systems report. From a functional standpoint I believe this was split up so that the subsets could easily be toggled on or off because they end up on different layers. Ok. The operational condition is the 4th character in the symbol code. Present -P, Anticipated Planned -A, Present Fully Capable - C, Present Damaged -D, Present Destroyed - X, Present Full to Capacity F. I'm not totally sure what you're after on the Echelon. The 11th / 12th character slots are for size / mobility. Echelon is included in this. I can't really list all of them because there are 100+ options. Thanks. It took me a while to fully get the Mil2525C specifications according to the coding scheme... SIDC 15 characters meaning and all modifiers options. However, It would be nice to get an ESRI documentation, as some implementation of the Symbol Dictionnary may need some explanation (why "assumed friend" symbols are identical to "friend" ? same question for "suspect" and "hostile"... no dashed line for "pending" symbols...) I'm not sure, sorry don't have time to look into this at the moment. I guess I was not using Filters correctly as I tried to use SIDC with point, when it's applicable for line or area... This symbol code only has 14 characters. Right... but it's coming from the Dictionnary, so should it not be on 15 characters ? Except for labelling, I guess it's working fine for now.
... View more
07-02-2013
07:12 AM
|
0
|
0
|
1309
|
POST
|
In case some of you have already all answers ready 🙂 (Mark or Carlos maybe !) I'm starting to learn MIL-STD-2525C standard (with ArcGIS Runtime for Java)... analyzing Java sample codes and Vehicle Commander application source... but I don't have enough Defense knownledge to understand how to use completly ArcGIS Runtime possibilities... Could you please provide some simple code or answers to this : I can't get any label drawn with my symbol... how to do that ? I'm not sure to fully understand what is the difference between a Position report and Spot report... How can I send message to indicate the "operationnal condition" (fully capable -> damage) How can I specify Echelon (11th & 12th caracters of SIC code ?) or other "modifier" indicators ? when playing with sample code, It seems that lots of Symbols don't display on map (for example "Assault Position F" : GFGPOAA---****X) or are displayed with "unknown" (for example all "Joker" or "Faker" symbols...). Is it normal ? I even got an error for « Station ASW Ship H » : Warning: SHSPA----***** : SIDC does not contain 15 characters Maybe there is detailed documentation for these questions, but for now I only found the public release of MIL-STD-2525C specifications... Thanks in advance for any help
... View more
07-01-2013
07:53 AM
|
0
|
7
|
4849
|
POST
|
thanks Sachin, it's working fine ! 😉 Actually, I already had part of the solution because I'm getting the Geometry Type of shapefiles the same way, but I'm still new to http request and JSon. here's my code : private Envelope requestHttpExtent(final DynamicLayerInfo layerInfo, final String urlMapService) {
Envelope envelope = null;
try {
String layerParam = layerInfo.toJson();
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost(urlMapService + "/dynamicLayer?");
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);
nameValuePairs.add(new BasicNameValuePair("layer", layerParam));
post.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = client.execute(post);
BufferedReader rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
JsonNode extentNode = parseJson(rd).findValue("extent");
if (extentNode != null) {
double xMin = extentNode.findValue("xmin").asDouble();
double yMin = extentNode.findValue("ymin").asDouble();
double xMax = extentNode.findValue("xmax").asDouble();
double yMax = extentNode.findValue("ymax").asDouble();
envelope = new Envelope(xMin, yMin, xMax, yMax);
}
} catch (Exception e) {
// do nothing
envelope = null;
}
return envelope;
}
... View more
06-28-2013
02:27 AM
|
0
|
0
|
460
|
POST
|
I using the ESRI sample "Add Raster" (in Datasources) to test the possibility to load DTED raster from local file. It's working fine with *.dt0 files. My issue is that the default rendering is Stretched and based on min/max values of the DTED tile cells (similar to the rendering I have when loading the same tile in ArcMap. same colorramp : Elevation #2). So from one tile to another, the min/max values are different, so rendering is not continue, as this image show it : [ATTACH=CONFIG]25547[/ATTACH] Is it possible to change the raster rendering ? In my case, I would like to change the classification with colorramp with same min/max values for all tiles. It seems to me that DrawingInfo only apply to layers with features (shapefile, graphicsLayer, ...)... What can I do with raster ?
... View more
06-27-2013
06:44 AM
|
0
|
3
|
4315
|
POST
|
The ArcGIS Runtime sample "Datasources > Add Shapefile" provide source code to select a shapefile and add it to the map based on a blank MPK (Map Package) and a map service (on the LocalServer). From that, I would like to be able to get the Full Extent of this layer (from menu "Zoom To Layer"). In my case, I have a World wide blank MPK, so any kind of Shapefile will be loaded. basically, from 2 identical blank MPK, I can load 2 different Shapefile, one with European countries, another with USA countries. I need to be able to zoom to first Layer on "Europe" or to second layer on "USA" ! But my issue is : - if I try to get the full extent from the Dynamic Layer, with getFullExtent(), I will get the Envelope from the MPK which is always the World extent. - How can I get the Full Extent from sub-layers of the dynamic layer to only get the Envelope of my Shapefile (sublayer[0]) ??
... View more
06-25-2013
07:08 AM
|
0
|
6
|
3594
|
POST
|
thanks. Great if it's coming in 10.2 !! this CompositeSymbol seems to be exactly what we are looking for... and we will definitely need it, as current simple symbols are too limited for us.
... View more
05-27-2013
11:42 PM
|
0
|
0
|
760
|
Online Status |
Offline
|
Date Last Visited |
11-11-2020
02:23 AM
|