POST
|
From what I read above ESRI does not allow one to create standalone Python applications using the built-in Python GUI (TKinter)? if there a reason for this? Could I use the PyQt5 library to do this instead? Jupiter is great for developing the code in realtime but does not offer the ability to create a standalone interface for a desktop application. My goal is to create a GUI that is specific to a project which taps into ESRI File Geodatabases to make querying and finding information alot faster and easier for the user who is not familiar with ArcMap or ArcPro but also offers the ability to visually see the results. I do understand ESRI has AppStudio, however, I find the licensing and the whole application development process (inclusive of another coding language) very confusing and would much rather stick to something that is easier and less of a hassle to understand such as Python since Python is so versatile. Also, I do not have a need to store my data on the ArcOnline platform, which can also be very costly (240 credits per 1GB of data stored which is about $24/month!!). Whereas I can just build right off my desktop which is $0. Is there any alternative to this? I am eager to start my project.
... View more
11-10-2019
09:15 AM
|
1
|
0
|
1538
|
POST
|
queryTask.execute(query);
// event when complete get the resultant array of features
queryTask.on("complete", lang.hitch(this, function(evt) {
var featureSet = evt.featureSet;
console.log('featureSet', featureSet);
// FeatureSet objects are returned and are set to resultFeatures
// resultFeatures contains multiple Features
// The multiple Features contains multiple Attributes which is what we want
//Performance enhancer - assign featureSet array to a single variable.
var resultFeatures = featureSet.features;
console.log('SearchResults: ', resultFeatures);
console.log('geometryType: ', featureSet.geometryType);
// customized symbology for the rectangle drawn on the map by the user
// symbology = red dashdot outline with a pale yellow transparent fill
var newSymbol = new SimpleFillSymbol(SimpleFillSymbol.STYLE_SOLID,
new SimpleLineSymbol(SimpleLineSymbol.STYLE_DASHDOT,
new Color([255, 0, 0, 1]), 2), new Color([255, 255, 0, 0.05]));
// add the graphic to the map
this._graphicsLayer.add(new Graphic(geometry, newSymbol));
//*****************************************************************************
// Highlighting the selected features and displaying it on the m //*****************************************************************************
// Creating a variable to handle the highlighting symboloy for the geomteryType
var highlightSymbol;
switch(featureSet.geometryType) {
case 'esriGeometryPoint':
highlightSymbol = new SimpleMarkerSymbol(SimpleMarkerSymbol.STYLE_CIRCLE, 20, null, '#00FFFF');
break;
case 'esriGeometryPolyline':
highlightSymbol = new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID, '#00FFFF', 3);
break;
case 'esriGeometryPolygon':
highlightSymbol = new SimpleFillSymbol(SimpleFillSymbol.STYLE_SOLID,
new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID, '#00FFFF', 2),
'#e74c3c');
break;
}
//console.log('highlight', highlightSymbol);
//Loop through each feature returned
for (var i = 0; i < resultFeatures.length; i++) {
//Get the current feature from the featureSet.
//Feature is a graphic
var graphic = resultFeatures[i].geometry;
//Add graphic to the map graphics layer.
this._graphicsLayer.add(new Graphic(graphic, highlightSymbol));
}
// this code puts the Class Name and the search result features together into a global array. Need to package for shipping to another script.
if (FeatureClassName.length > 0) {
//console.log('j: ', j);
if (resultFeatures.length > 0) {
resultFeaturesALL.push({
"ClassName": FeatureClassName[j].ClassName,
"Feautes": resultFeatures
});
}
j = j + 1;
//console.log('j: ', j);
}
console.log('Array: ', resultFeaturesALL);
})); // end queryTask
} // end for loop
... View more
06-15-2018
12:55 PM
|
0
|
0
|
351
|
POST
|
Hi Robert, I was just curious as to the best way to handle the results. I am noticing that when my results come in they are not coming in, in the same order they are being queried. Would I use Dojo/Memory module to handle this? Ie. Save it to memory first then process it with some other information so it remains in the same order? thanks for the help!
... View more
06-15-2018
09:17 AM
|
0
|
2
|
351
|
POST
|
Robert, Thanks again. This has been a lot of help getting to know WAB. I actually found an article (Link to other post here) that had some code that was similar to what I need to do and have been modifying that. You have been an invaluable resource on GeoNet. Thank you for taking the time to help me and others out on here. It is greatly appreciated, especially while trying to learn WAB. Thanks!
... View more
06-02-2018
07:33 AM
|
0
|
4
|
1622
|
POST
|
Hi Robert, thanks again for the much needed help. I am fairly new to WAB and development of customized widgets. I was trying to track down some documentation on the dijit/drawBox but was unable to find anything. None-the-less, I was able to get the drawBox to work and was able to draw on the screen. One of the issues I am having is being able to default the drawBox to "EXTENT" and where to do this and how to call it appropriately. Additionally, I was wondering where I would activate the tool automatically when the custom widget icon is clicked? Would I do this in: 1. postCreate? 2. onOpen? 3. onActive? Also would I hook this to the icon-node from the controller with an event? Thanks again for the help! It is very appreciated especially the timely responses.
... View more
06-01-2018
08:37 AM
|
0
|
6
|
1622
|
POST
|
Robert, My apologies. What I meant was a comparison using the following: 1. 'jimu/dijit/FeatureSetChooserForMultipleLayers' this.selectDijit = new FeatureSetChooserForMultipleLayers({ map: this.map, updateSelection: true, fullyWithin: 'wholly', geoTypes: ['EXTENT'] }); This gives me the selection tool which can select multiple layers or so I think... correct me if I am wrong. VS 2. "esri/toolbars/draw" _initToolbar: function() { toolBar = new Draw(this.map); toolBar.on("draw-end", addGraphic); // event delegation so a click handler is not // needed for each individual button on(dom.byId("info"), "click", function(evt) { if (evt.target.id === "info") { return; } var tool = evt.target.id.toLowerCase(); this.map.disableMapNavigation(); toolBar.activate(tool); }); }, addGraphic: function(evt){ //deactivate the toolbar and clear existing graphics toolBar.deavtivate(); this.map.enableMapNavigation(); // assigns a symbol to extent or polygon var symbol; if (evt.geometry.type === "EXTENT" || evt.geometry.type === "polygon") { symbol = fillSymbol; } this.map.graphics.add(new Graphic(evt.geometry, symbol)); } I will try to build my custom widget using the draw method. I was hoping to get away from clicking for options to draw. I just want to click on my widget, make my selection and have the results populate my table.
... View more
05-30-2018
03:32 PM
|
0
|
8
|
1622
|
POST
|
Hi Robert, Thanks for the response. This is extremely helpful. Do you think the jimu drawBox dijit would be better to use than the jimu selectDigit to make selections from the map? Thanks in advance, Ryan
... View more
05-30-2018
01:26 PM
|
0
|
10
|
1622
|
POST
|
I am looking to call the Select Widget within my own custom widget. The idea is to use the select widget to get the selected area, then post that collected information and send it to my custom widget where it will be used to query my file server using ASP where it will then be populated into a dgrid in a panel. I do NOT want to have the Select widget added to my WAB and do not want the user to have access to this first and then have to click on my custom widget. I only want the user to click once, on my custom widget, in order to give the search results in a dgrid table based on their selection. I have been told there is a way to call another widget, activate it as hidden, use it, and then populate my dgrid with the passed over information. There seems to be no documentation that I can find on how to do this in detail, let along an example of calling another widget to use its functionality. Does anyone have an idea on how to do this without building your own code or modifying the Select tool? I find the modification route starting to get very complicated and messy... Looking forward to everyone's answers! Thanks in advance, Ryan
... View more
05-30-2018
09:53 AM
|
0
|
12
|
2336
|
POST
|
I am working on building a custom template and widget for a project. I am currently going through the tutorials on creating a custom theme. I hit a bit of snag and am asking the community for an explanation or some help finding out where it needs to be improved or corrected. The issue is as follows: When I create a widget group I am able to click on the ellipses icon I created and a small panel opens up and shows the grouped widgets. When I click the ellipses again the listed widgets in that small panel does not disappear. I cannot find the right spot to correct this. Additionally, after accessing a widget from the group, a panel appears. This is what I want, however, when I try to close it down by clicking on a different widget it does not close. Instead the other widgets seem to be displayed behind the group widget and are able to open and close. The functionality I am looking for is much cleaner than this. I am looking to click on the ellipses, select my widget, it opens, I click on the ellipses again and select the same widget and the panel closes. I also want it to be able to clear the small group widget division that pops up when accessing the ellipses on the sidebar to disappear. I also want the group and sidebar widgets to access the same panel, or at least appear to access the same panel. This image shows how when clicking the ellipses on and off the small division panel showing the grouped widgets does not disappear. Any help or indicators of where and how to address these issues would be greatly appreciated. Thanks, Ryan
... View more
05-16-2018
09:16 AM
|
0
|
0
|
502
|
Title | Kudos | Posted |
---|---|---|
1 | 11-10-2019 09:15 AM |
Online Status |
Offline
|
Date Last Visited |
09-18-2022
08:21 AM
|