POST
|
Thank you so much! That thread perfectly summarizes the workflow and why it was designed that way. You are indeed wise! I was feeling out of my league with these processes, but I am beginning to understand how they work. I hope to poke around the dev summit and find some info on newer 911 response models. I feel a lot has probably changed to improve these types of workflows.
... View more
02-03-2016
08:42 AM
|
0
|
0
|
774
|
POST
|
Just to re-clarify: the turn restriction table is produced using a mix of Arc *Macro Language (AML) and ArcView 3.3 (with some avenue scripts). The AML processes calculate angles and assign impedance values to the turn table for the AV3.3 step. ArcView and Avenue are used for joining the turn table to the network dataset. I do appreciate how ancient and unsupported these workflows are. I wasn't even born when AML was first designed by ESRI, and I do feel like I should be sporting a Unix beard to work on these scripts. The challenge I am facing is to provide an updated workflow for the customer that is compatible with their current CAD product (TriTech Software Systems). As far as I can tell, Tritech's back-end relies on MapObjects (yes, not ArcObjects, but MapObjects). The City I am working with are looking for a workflow that can support adding a turn table (not a turn feature class) to an existing network dataset (.nws format). If this is confusing, irrelevant, or just plain impossible using newer technology, then I have to readdress the issue with the customer to identify a newer approach to improve response times. This workflow was designed 20 years ago, so I am leaning toward finding another way to shave time off of their call-response data model. Sorry to hijack your thread, but I am looking into your posts on the global turn delay model for inspiration.
... View more
02-02-2016
08:02 PM
|
1
|
3
|
774
|
POST
|
Yes, that is the problem. It may be a limitation in dispatch system to only accept a certain network dataset formats, but I think it might relate to the inability to add robust turn restrictions in anything other than ArcView 3.3. I want to move away from this workflow ASAP, so hence my piggybacking off of your prompt.
... View more
02-02-2016
01:48 PM
|
0
|
0
|
774
|
POST
|
I have the same question, and in fact this is something that appears (is it?) to be a lacking feature in ArcGIS. The city I am working with uses ArcView 3.3 and Arc Markup Language (AML) to create a turn restriction table and append it to a .NWS dataset that is compatible with their CAD product. There has to be a better way to produce these files. Does this relate to your requirements? If so, I can provide past correspondence between ESRI on the topic and the lack of support for this workflow. I am interested in knowing if anything has changed since then. I would appreciate an ESRI response on this thread clarifying this functionality (Ahem... any ESRI reps want to chime in?).
... View more
02-02-2016
11:41 AM
|
1
|
8
|
774
|
POST
|
After about a week of receiving no reply to this thread (and also shrugged shoulders from different unnamed support teams) I decided it was either sink or swim on finding a solution. Instead of sinking, I have developed a solid and efficient workaround. This solution should work for anyone who needs to sync ArcGIS Runtime content remotely via a service, and can't use shared directories or FTP sites for various reasons. Since the ArcGIS Runtime SDK for.NET supports syncing attachments, I simply added a dummy point variable to an SDE Feature Layer and attached a .zip file containing the runtime content. A separate job on the ArcGIS for Server 10.2.2 side uses a mix of Python and .Net c# to rebuild, package, and update the geocoder attachment on the FeatureLayer. The layer is then published and consumed via a sync-enabled Feature Service. Once published, I sync the point layer with the local .geodatabase on the client side using .NET Runtime. I then iterate through the FeatureTables, query the attachments, and grab the .zip package. After, I use a method available in .Net 4.5 that supports ZIP archives to stream the result and write to a local file. private async Task GetLocator()
{
try
{
Console.WriteLine("Connecting to feature");
Esri.ArcGISRuntime.Geometry.SpatialReference mySpatialReference = Esri.ArcGISRuntime.Geometry.SpatialReference.Create(102100);
Esri.ArcGISRuntime.Data.ServiceFeatureTable LocatorFeatureTable = await ServiceFeatureTable.OpenAsync
(new Uri(SERVER_URL + LocatorSericePath),
sr_override: mySpatialReference);
var rc = await LocatorFeatureTable.QueryAsync(1);
// check if any were found
if (LocatorFeatureTable.HasAttachments)
{
// var featureID = table.GlobalIDField;
var attachmentResult = await LocatorFeatureTable.QueryAttachmentsAsync(1);
// check if any were found
if (attachmentResult.Infos.Any())
{
foreach (var info in attachmentResult.Infos)
{
var item = string.Format("{0}: {1} - {2} ({3} bytes)", info.ID.ToString(), info.ContentType, info.Name, info.Size);
Console.WriteLine(item);
using (var stream = await info.GetDataAsync() as MemoryStream)
{
using (var archive = new FileStream(@"C:\Temp\" + info.Name + ".zip", FileMode.Create))
{
stream.Seek(0, SeekOrigin.Begin);
stream.CopyTo(archive);
}
}
try
{
string[] filePaths = Directory.GetFiles(LocalGeolocatorDir);
foreach (string filePath in filePaths)
File.Delete(filePath);
ZipFile.ExtractToDirectory(@"C:\Temp\" + info.Name + ".zip", LocalGeolocatorDir);
}
catch (Exception e)
{
ZipFile.ExtractToDirectory(@"C:\Temp\" + info.Name + ".zip", LocalGeolocatorDir);
}
}
}
}
else
{
Console.WriteLine("No attachments found");
}
}
catch (Exception e)
{
Console.WriteLine("Error in GetLocator() method");
Console.WriteLine(e.Message);
}
} Hope this is useful to someone who experienced issue with the lack of sync functionality for geocoding within the .NET Desktop API. Just define any global variables (such as LocalGeocoderDir) and you should be good to go. I would be interested to hear the results if anyone happens to experiments with syncing other Runtime content, such a Network Dataset. Please let me know if you have any questions, and I will try to be courteous enough to provide a quick and helpful response.
... View more
05-11-2015
12:45 PM
|
0
|
1
|
410
|
POST
|
Hello, I am utilizing ESRI's Runtime SDK for .NET using the Desktop API. The applications I am developing will need to update internal data on the client via a secure web adapter connection to an outside instance of ArcGIS for Server 10.2.2. This sync task can be considered a 1-way replica. That is, the client instances do not need to sync edits back up to the ArcGIS for Server. After the data is cached locally using the sync task, the application then records the name of the geodatabase in the .NET solution for persistent offline use. My GeoLocator on the client side needs to utilize the most recent data available. Our locators utilize placename and road networks that change frequently. Since they will be only connecting to the ArcGIS for Server instance using a secure web adapter once or twice a week, I need a workflow to push or update a new locator to the client each time it connects. Keeping in mind that these sync operations cannot be performed via FTP, SQL, or any other data access other than the token-authenticated link between the client app and the server, how can I best approach this problem? One idea I had was to use a code snippet from ArcObjects for .NET (RebuildAddressLocatorPersonalGeodataase()) to rebuild the locator using data from the synced geodatabase. However, this sounds a bit convoluted. Can anyone expand on my solution, or provide me with resources to accomplish this from within a .NET 4.5 environment? Thanks -Andy Message was edited by: Andrew Tangeman, trimmed redundant info and made question more direct and concise. Added tags.
... View more
04-28-2015
02:26 PM
|
0
|
2
|
3623
|
Title | Kudos | Posted |
---|---|---|
1 | 02-02-2016 08:02 PM | |
1 | 02-02-2016 11:41 AM |
Online Status |
Offline
|
Date Last Visited |
11-11-2020
02:25 AM
|