|
POST
|
I think everyone knows by now that debugging a Python Addin tool is a major pain. You have to make your changes, rebuild the addin, reinstall it and restart ArcGIS. I suppose it wouldnt be quite so bad if there was a way to get ArcGIS to initialize significantly faster. Alas, I'd like to know if anyone has had any success using an open source CI tool to build and test Python Addins or if anyone has any ideas as to how it could work.
... View more
04-29-2016
07:30 AM
|
0
|
4
|
2809
|
|
POST
|
Thanks Gareth! I don't think the Collector team would do it. It would be easier for them to just release the iOS and Android source code than rewrite the entire application in AppStudio. Also, since those guys are Obj-C+Swift and Java developers, they probably also would not have the skill set needed to do it in AppStudio - though I'm sure they could spin up on it relatively quickly. It's funny, at the DevSummit I was in an AppStudio session and Sathya Prasad from the AppStudio dev team asked the audience what we wanted to use it for. I mentioned this and he excitedly responded that it was a great use case and specifically mentioned that doing so would allow people to customize the application. I asked him if he wanted to help with the project and his response was a less than enthusiastic "maybe". A shame, I thought. I'm sure the AppStudio Dev Team could really help with this to make sure that we're using the best workflows and practices. Maybe if I tag AppStudio for ArcGIS, Hannah Ferrier, Marika Vertzonis, Gareth Walters, Stephen Quan and Lucas Danzinger on this post we'll get some sort of quazi-official response. At the very least, I'd be interested to know if Esri's Qt and AppStudio folks think this project would be better suited for a straight-up ArcGIS Runtime for Qt implementation, using some C++ to do the heavy lifting or if they feel that AppStudio framework could keep up with the load. They would know more about that than I would. I'll be creating a GitProject for this effort in the next few days and will post the Repo link. It's admittedly going to be a big effort and will take a while to complete, but the more people we can get involved, the better chance of success we'll actually have.
... View more
03-17-2016
07:26 AM
|
0
|
0
|
2066
|
|
POST
|
I did see that Elvin! It looks like a decent starting point. I also saw several samples in AppStudio that would be useful. The Attribute Table sample appears almost identical to the attribute table displayed in the iPhone version of Collector, so I'll definitely be using that.
... View more
03-17-2016
06:14 AM
|
1
|
0
|
2066
|
|
POST
|
Thanks for the response guys. When I said I installed the Portal Resources though, I meant that I installed the Esri Maps for Offices portal resources.
... View more
03-04-2016
04:52 PM
|
0
|
2
|
2795
|
|
POST
|
Where I work, we love Collector. We love it, and we hate it. Specifically, we love what it can already do and we love how it does the vast majority of it. Like any customer though, there are things we hate about it and most of that is related to our own selfish needs and desires for the application to conform to our specific workflows. Now, it would be unrealistic of us to expect Esri to change the Collector for ArcGIS application based on the needs of a single customer. We know this because we've asked them several times to make changes to the application and Esri responded that it is unrealistic of us to expect Esri to change the Collector for ArcGIS application based on the needs of a single customer. We actually totally understand that and agree. That is unrealistic. Esri has tens of thousands of not hundreds of thousands of customers from every industry imaginable and Collector strives to serve them all. Every single change has to be very carefully thought out and must be implemented in very broad ways so as to support the maximum number of workflows. We get it. So, we asked them for the source code so we could change it ourselves and deploy it internally. We didn't really see anything wrong with that. Esri is not monetizing the application. The Collector4ArcGIS team admitted at the 2014 DevSummit that it was built using Esri's SDKs and there was no black magic or special voodoo code-tricks going on in the app to make it work. Since it's built using the Esri Runtime SDKs, we would still need to leverage Esri products on the backend to support it so we couldn't (and wouldn't want to) undermine their business model - ie. we'd still need an ArcGIS Server and Portal along with many other pieces of the puzzle running on the backend and that's where the money supporting Collector is made anyway. Releasing the source code for Collector is something that would allow companies like mine to simply make the desired changes on our own and deploy it internally as an Enterprise App. Esri however, kindly declined this request and didn't specify a reason for declining. Of course, that's their right. They did develop it and they can do with it as they please. So, given that Esri Won't release the source code for Collector Cannot implement meaningful changes for each and every organization/customer Decided not to support Windows 7 with the Collector for Windows app - even though Windows 7 still commands the vast majority of market share for the Enterprise OS market I'd like to know if any of you GeoNerds out there want to band together and work with me on creating an AppStudio Template as that gets as close as we can possibly get to Collector, which can be compiled for any platform and the source code of the template will be completely open and freely available. Who's in? Feel free to chime in here as well Esri folks. Maybe you've got some plans in the works that would give us pause?
... View more
02-26-2016
04:52 PM
|
5
|
8
|
5392
|
|
POST
|
Hi Tiffanny, I did look through the modules and found them very helpful, but still the documents site needs to list the properties for each connector. It's simply not good enough to say, provide a table which lists the names of the standard input/output connectors with an abstract description of what they do. Properties must be listed. What Esri has done here is akin to saying, here's all the functions in arcpy and their parameters but not giving any of the parameter details.
... View more
02-25-2016
10:03 AM
|
0
|
0
|
1354
|
|
POST
|
Thanks Greg, I noticed that but there should be documentation so that I don't have to remote into my Server and open up the GeoEvent Manager page and actually start to create a new connector in order to understand what everything means/is/does. The very point of robust documentation is so that I don't have to do that. I should be able to look at the documentation and start to formulate a plan for how things need to be configured before I've ever opened or even installed GeoEvent.
... View more
02-25-2016
09:56 AM
|
3
|
0
|
1354
|
|
POST
|
I've spent the better half of the day pouring through the GeoEvent documentation and have yet to find the page where the properties for each Input Connector and Output Connector that are available out of the box are defined. For example, Poll an ArcGIS Server for Features is an Input Connector. Where is the documentation that tells me what each of the properties for that input connector mean? What about all the others? The standard documentation is super weak, it's all high-level abstraction and no meat. Maybe I'm looking in the wrong place. That happens a lot to me with the new doc site, but the search doesn't help either.
... View more
02-17-2016
12:16 PM
|
1
|
5
|
3685
|
|
POST
|
No, there is no way to configure collector to do this that I am currently aware of. I've had the same complaint for about a year and a half now. This is pure speculation but I would expect that the problem would lie with the way Collector implements the AddAttachment REST Endpoint. When you add an attachment using that endpoint, the name of that attachment is derived from the filename on the device. So when you take a picture on your device and your device autonames it something like Photo1.jpg, that becomes the name of the attachment which is what you see the attachment hyperlinks in Collector. Esri did not add a step in between the time you take the photo and the time the AddAttachment call is made to afford you the opportunity to rename the photo you just took. Theoretically, if this was done you could have attachments with custom names and you might then be able to actually understand what a photo is going to be before tapping on the attachment link in Collector. That said, I would assume that Esri had a good reason for not implementing what seems like a no-brainer functionality. One possible reason might be that the iOS SDK may now allow you to rename photos on the device. I don't know that to be the case but if it were, that would leave them without the ability to actually implement that functionality on iOS and if they couldn't do it on iOS, they might not do it on Android even if they could simply because they wanted to keep the application's capabilities identical on both platforms.
... View more
02-05-2016
08:44 AM
|
0
|
0
|
1690
|
|
POST
|
I'm trying to submit a very simply geocodeAddresses request to an ArcGIS for Server instance that is federated with Portal for ArcGIS. Getting the Portal Token and exchanging it for a Server token works fine and I can print the tokens and they are valid. However, when I submit the geocodeAddresses request to the Federated Server which hosts the Geocoding Service, the server responds with 498: Invalid Token. How could the token be invalid? The Portal just generated the token for the federated server! import urllib
import urllib2
import httplib
import time
import json
import contextlib
def submit_request(request):
""" Returns the response from an HTTP request in json format."""
with contextlib.closing(urllib2.urlopen(request)) as response:
job_info = json.load(response)
return job_info
def get_PortalToken(username, password):
""" Returns an authentication token for use in ArcGIS Online."""
# Set the username and password parameters before
# getting the token.
#
params = {"username": username,
"password": password,
"client": "requestip",
"f": "json"}
token_url = "{}/generateToken".format("https://gis.my.domain.com/webadaptor/sharing/rest")
request = urllib2.Request(token_url, urllib.urlencode(params))
token_response = submit_request(request)
if "token" in token_response:
print("Getting token...")
token = token_response.get("token")
return token
else:
if "error" in token_response:
error_mess = token_response.get("error", {}).get("message")
raise Exception("Portal error: {} ".format(error_mess))
def PortalToken_to_ServerToken(PortalToken):
"""Exchanges a Portal Token for a Server Token to provide access to restricted resources hosted on a Server federated with Portal"""
params = {"token":PortalToken,
"serverURL": "https://kdcpgis02.my.domain.com:6443/arcgis",
"f":"json"}
tokenURL = "{}/generateToken".format("https://gis.my.domain.com/webadaptor/sharing/rest")
request = urllib2.Request(tokenURL, urllib.urlencode(params))
tokenResponse = submit_request(request)
if "token" in tokenResponse:
print("Exchanging token...")
token = tokenResponse.get("token")
print("Success")
return token
else:
if "error" in token_response:
error_mess = token_response.get("error", {}).get("message")
raise Exception("Portal error: {} ".format(error_mess))
def geocodeAddresses(token, addresses):
""" Returns the result from a geocodeAddresses request"""
params = {"token": token,
"addresses": addresses,
"f": "json"}
geocode_url = "{}/geocodeAddresses".format("https://kdcpgis02.my.domain.com:6443/arcgis/rest/services/GeocodeServices/USAGeocodingService/GeocodeServer/")
request = urllib2.Request(geocode_url, urllib.urlencode(params))
geocode_response = submit_request(request)
if "error" in geocode_response:
error_msg = geocode_response.get("error", {}).get("message")
raise Exception("Error: {}".format(error_msg))
else:
return geocode_response
# EXECUTION STATEMENTS
pToken = get_PortalToken("username", "password")
sToken = PortalToken_to_ServerToken(pToken)
addresses = '"records":[{"attributes":{"OBJECTID":1,"Address":"380 New York St.","City":"Redlands","Region":"CA","Postal":"92373"}},{"attributes":{"OBJECTID":2,"Address":"1 World Way","City":"Los Angeles","Region":"CA","Postal":"90045"}}]'
geocodeAddresses(sToken, addresses)
... View more
02-04-2016
02:35 PM
|
2
|
1
|
5532
|
|
POST
|
Hi Ted, If you want to do more than configure a template and actually want to build in custom business logic, functionality and interfaces, then you have to download AppStudio for ArcGIS (Desktop Edition) to either "Extend an Application" template or build a new application from the ground up using Qt Creator - which is the IDE used in AppStudio for ArcGIS (Desktop Edition). When you configure a template via the AppStudio website, you're not actually developing an app. You're modifying some settings (like UI colors and text) and swapping some resources (like pictures and icons) in an existing application but you're not developing any of the application's functionality. Someone else has already wrote the code necessary to implement all the buttons, map viewport. sign in screens, animations and the like. This is probably a 60% solution but to get the rest of the way and build a cross-platform application that actually meets 100% of your requirements and implement your own workflows in the most intuitive way possible, you'll need to either "Extend an Application" template which means download the code, open it up and start making changes or build a completely new application from the ground up using AppStudio for ArcGIS (Desktop Edition) which is based on the ArcGIS Runtime SDK for Qt. To go a little further in explaining why you might want to do this - in traditional development, if you wanted to develop a custom application and make it available on multiple platforms, you would have to write a completely separate code-base using a completely different SDK for each platform you wanted to make your application available on. For example, for Windows you might write the application in C# and reference Esri's .NET SDK. For Linux you'd probably write the application in Java and reference Esri's Java SDK. You'd use Java again for Android but this time you would reference Esri's Android SDK. Lastly, you would write the application again in Objective-C or Swift for iOS and OS X but this time you would reference Esri's iOS and OS X SDKs respectively. As you can see, that would mean to make just one application available across all platforms, you'd have to write the code for that application 5 different times, be familiar with the idiosyncrasies of 5 different SDKs and know at least 3 different programming languages not to mention get reasonable familiar with the capabilities of several different IDEs. This is why most app development teams are pretty large and usually have several sub-teams that each specialize in developing applications for a specific platform. The scope is simply too much for any single developer to handle. Even a small team of 3-5 highly experienced developers would probably struggle developing all of those different code-bases. AppStudio solves this problem by leveraging the Qt SDK and adding an additional framework on top of it that makes developing cross-platform applications much easier. What AppStudio for ArcGIS (Desktop Edition) and Qt do is create a set of bindings to each of the platforms I mentioned before. Bindings are essentially libraries which perform the translation between the code you write in AppStudio for ArcGIS (Desktop Edition) / QtCreator and the target platform you're compiling your app to, say iOS for example. So when you build a button in QML with AppStudio for ArcGIS (Desktop Edition) and then compile that App for iOS, the button you implemented in QML is translated to the native Objective-C or Swift code to implement a button in iOS. This solves the problem of having to write (and maintain!!!) 5 different code-bases to make the exact same app available on all platforms. You write it once in AppStudio for ArcGIS (Desktop Edition) / Qt, and the compiler does the hard work of translating what you wrote to function on other platforms. This is what the 'Make' service does on ArcGIS Online. So that's what there is to download and why a developer might want to do so as well.
... View more
02-04-2016
05:57 AM
|
3
|
0
|
1981
|
|
POST
|
Thanks Dan. I've seen that page but what I'm really looking for is the equivalent of the Build Your First App page from the JavaScript API but for AppStudio. After a good amount of digging, I did actually find what I was looking for on AppStudio's Extend Apps page. The key phrase was buried in the documentation under Extend Apps > Create an App in App Studio. Specifically, in the Create a New App section, the line: To learn more about how to edit your app, see What is Qt Creator and QML and Esri's QML API. The link "QML and Esri's QML API" has a section in it called "SDK Tutorials" which walk you through adding map and getting driving directions, etc. This is the key information needed to actually start building an app from scratch in AppStudio, learning how it to put it all together, what all those template files are doing and how everything works. Don't get me wrong, the Featured Templates are neat and there is certainly value in having them out there and available for non-developers to quickly and easily get to a 60% solution, but the actual development documentation needs to be made more prominent.
... View more
01-22-2016
10:17 AM
|
3
|
0
|
1981
|
|
POST
|
That makes a lot of sense Lucas. Thanks for the response!
... View more
01-22-2016
10:01 AM
|
0
|
0
|
1690
|
| Title | Kudos | Posted |
|---|---|---|
| 1 | 06-11-2015 12:02 PM | |
| 2 | 02-04-2016 02:35 PM | |
| 1 | 04-11-2017 12:51 PM | |
| 1 | 08-07-2015 11:00 AM | |
| 4 | 06-19-2015 01:44 PM |
| Online Status |
Offline
|
| Date Last Visited |
11-11-2020
02:23 AM
|