|
POST
|
One of the takeaways from the recent 2019 Dev Summit for me was to check out React. I don't have any background in web development outside of web GIS and therefore haven't really delved too deeply into any of the plethora of frameworks. So I'm looking for any support or instructions for using React with the ArcGIS API for Javascript. Here are some resources that a simple Google search revealed. And that's all I found. React component kit for the ArcGIS API for JavaScript, ESRI Github https://github.com/Esri/react-arcgis Using React with the ArcGIS API for JavaScript, Rene Rubalcava https://www.esri.com/arcgis-blog/products/js-api-arcgis/mapping/using-react-with-the-arcgis-api-for-javascript/ React Redux: Building Modern Web Apps with the ArcGIS JS API, Michael Van den Bergh https://www.esri.com/arcgis-blog/products/js-api-arcgis/3d-gis/react-redux-building-modern-web-apps-with-the-arcgis-js-api/ Using widgets with React, ESRI Documentation https://developers.arcgis.com/javascript/latest/sample-code/widgets-frameworks-react/index.html Using the ArcGIS API for JavaScript in Applications built with webpack, Tom Wayson http://tomwayson.com/2016/11/27/using-the-arcgis-api-for-javascript-in-applications-built-with-webpack/ Developing Widgets for ArcGIS Web AppBuilder, Alex Urquhart https://alexurquhart.com/post/es6-react-with-arcgis-wabde/ A tiny library to help load ArcGIS API for JavaScript modules in non-Dojo applications https://www.diycode.cc/projects/Esri/esri-loader If you know of any other helpful resources, please share. I won't post a summary of all the general React tutorials or intros I've come across but if you know a particular good ones, please comment as well. Two books I've picked up are: Learning React, A Hands-On Guide to Building Web Applications Using React and Redux, Kirupa Chinnathambi. Kirupa also has a cool blog here: https://www.kirupa.com/react/index.htm. The Road to Learning React, Robin Wieruch. An earlier version of this ebook I found almost unreadable but the latest version is an improvement. Robin also has a blog. https://www.robinwieruch.de/
... View more
03-21-2019
01:37 PM
|
0
|
0
|
1381
|
|
POST
|
Is the 'Hosted' folder in the REST services directory of a hosting server in ArcGIS Enterprise created during installation and thereafter hidden from clients such as ArcMap or ArcGIS Pro? I've been looking at how Portal/Enterprise works when copying data to server during publishing versus adding data as items. The "itemized" data goes to the Hosted folder which I see on the server and the REST URL, and in ArcGIS Server Manager, but i can't see it when publishing from Pro. All I see is the root and a "GP Services" folders. I've run into issues with folders before when they weren't created through ArcGIS Server Manager, and wanted to make sure this is working as intended since I didn't configure this myself.
... View more
02-28-2019
03:05 PM
|
0
|
1
|
874
|
|
POST
|
Thanks, everyone, for the great feedback... I don't expect this to revolutionize your work environment any time soon. But it's great to hear how organizations are different or similar. I'm sure to continue thinking about this. So keep the feedback coming.
... View more
02-25-2019
11:27 AM
|
1
|
0
|
15869
|
|
POST
|
Would like to hear some thoughts or suggestions for management of *.sd and *.sddraft service definition files. I used to not spend too much time thinking about them which means I've never really understood the 2-part SDDRAFT=> SD> map service publishing process. But now, when publishing with the new Python API or publishing through Pro, I'm wondering if maybe I will want to work with these files directly? I believe SDDRAFT is XML and SD looks like some binary format. But maybe there are good reasons to want to crack open the XML.. So any best practices around storage (where to save them), who should have access, etc would be helpful.
... View more
02-25-2019
09:23 AM
|
0
|
1
|
1448
|
|
POST
|
Well, yes, depending on company or department size, many of us are forced to wear multiple hats. What I decry is a situation where you have 10 GIS Analysts and 5 Tech's each wearing 9 hats. Joe Borgione wrote: On any given day, at any given hour I might be one or more of those listed. And that's this week: not sure about the future....
... View more
02-22-2019
11:45 AM
|
0
|
1
|
15869
|
|
POST
|
Yes, absolutely - I had a Manager in there somewhere and somehow dropped it. Will add back in.
... View more
02-22-2019
11:42 AM
|
0
|
0
|
15869
|
|
POST
|
The standard GIS job titles, for me, have always lacked descriptive specificity. They pretty much suggest everyone is a generalist, which is not true. As a result, GIS job postings typically describe GIS jacks-of-all-trade. Also, job titles aren't really commoditized - the GIS Analyst in one company is equivalent to the GIS Technician another company, and really does no analytical work whatsoever. And how about those ranks of Tech I or Tech II, or Analyst IV!? Come on! Well, I've referred to the future but the future is now. I'm proposing the below new GIS job titles - these would be the roles I'd start with for my own team.(Cut me some slack for a very personal and partial and potentially insular GIS world view.) GIS Data Engineer Data Engineer is the new ETL technologist with a pinch of data architect and a dash of big data developer, This is the world of data pipelines, scheduled jobs, data in the cloud, reatime data, and data integration. My hope would be for this person to never have to open a desktop GIS tool or print a map but to have the most thorough understanding of geospatial data. The GIS Data Engineer interacts with anyone needing GIS data or being a source for GIS data. GIS Front End Developer Call her or him a GIS Web Developer or Web GIS Developer. Someone who knows general Web Design and Web Development, knows any GIS related API's and has enough background in Desktop GIS to be able to finish the journey from desktop use to Web UX. There is a still a cartographic element to this. We don't want to lose that quality and certainty that comes with a professional to be lost in the migration to the web. GIS Data Capture Specialist There is some old and new in this role. We still use handheld GPS but we also capture GIS data using phones, LIDAR, sensors, along with other feeds that need to be ingested. I see this role as the field focused one that used to be about GPS surveying but now is about embracing IoT, edge computing, and realtime. This person will work with the GIS Data Engineer to make the data flow and the GIS Front End Developer to expose it. GIS Mapping Technician We may still be stuck with this role until self service mapping means mind reading and voice activation or realtime dashboards have completely voided the need for any one-off map deliverables. For the time being, the mapping tech will remain a jack of all trades and interact with everyone on the team. GIS Database Administrator What used to be the arcane world of the SDE Admin who ruled the creepy command line will continue to morph into someone who understand spatial data in any format and database flavor, relational or not, handles all the access and security where that isn't strictly in the domain of SecProv or other DBA's, knows versioning and replication inside out and can make GIS data shine and sparkle 24/7/365. GIS Business Analyst Most places I've seen, GIS staff play entirely reactive roles. Someone calls and says: "I need a map that shows XYZ." - GIS gets busy and creates a map that shows XYZ. A little more requirements gathering goes into things like a portal implementation but it happens during downtime when the phone is silent and no maps are being made. Managers rarely have time to actually figure out what the enterprise needs or to explain to the enterprise what GIS can do. So hand that whole aspect of eliciting requirements supporting the enterprise value chain and marketing the power of GIS to a GIS Business Analyst. GIS Data Analyst, here goes... What GIS analysis should be about in the first place. Making sense of geospatial data sets not just plotting them on a map. Integrating GIS data with non-geospatial data. Devising geospatial data models and applying statistical rigor to GIS data. Processing and mining realtime geospatial feeds. Making GIS part of data science. Collaborating with machine learning experts to find geospatial patterns and perform time series and predictive analytics. Delivering geospatial intelligence for enterprise decision making. Any thoughts? Update (02/25/2019) GIS Manager, GIS Supervisor, GIS Tech Lead, Chief GIS Officer... Clearly, no team or department would be complete without solid leadership. If there is only one leadership role for the GIS team, then this should be someone who really knows the business and knows as much about other parts of IT and non-technical areas as he/she does about GIS. This individual should be setting the agenda for the team and "managing" the team effort, not be bogged down with administrative duties. This role would serve as guardian of the GIS Roadmap. Where you can split roles up into a GIS Tech Lead and a GIS Supervisor (administrative) role, that's great. It's the tech lead's job to seek alignment with other technology teams and initiatives in the company and understand what's cutting edge in GIS (similar to a SA as suggested in the comments). Leave the other managerial duties and project management type task to the supervisor. In my attempt above at delineating roles, I was thinking a lot about how/where GIS Interfaces with the non-GIS world. I think that's very important and goes a long ways towards not only making GIS successful but making it relevant. However, I think I've neglected an entire tranche of GIS capabilities, that - while they may not be crucial for every team - are uniquely GIS and require a deep understanding, training or experience in geospatial science. Some of the comments have suggested a need for something like a GIS or Geospatial Data SME. So maybe "Geospatial Subject Matter Expert" or "Geospatial Scientist" would best describe this role. It's someone who understands spatial features and spatial relationships, who can architect and build GIS networks and data models, who understands raster data and elevation models, who can validate or vet output from the ever-easier-to-use desktop and web tools, finally someone who can act as a data steward in organizations where GIS counts as a true system or record and thus a source for master data.
... View more
02-22-2019
08:25 AM
|
7
|
11
|
19999
|
|
POST
|
Thanks, Earl.... if you saw my initial post you noticed I was trying to work with one version of arcpy, and mine only had arcpy.mp, which doesn't work quite the same way. I did get it to work in the older version running in Python 2.7. All in all, I was really trying an ArcGIS Pro centric approach. Getting used to working with APRX instead of MXD. Thanksa for chiming in though.
... View more
02-13-2019
10:59 AM
|
1
|
0
|
3646
|
|
POST
|
I was playing with PDF printing and found this thread helpful. But you may have seen it already.
... View more
02-13-2019
10:56 AM
|
0
|
0
|
3499
|
|
POST
|
Ok, so after working on this here post about recycling MXD for publishing with Pro, I've revisited the publishing script and found that the sample given here works on my end after all. Here is my slightly revised version. import arcpy
import os
# Set output file names
outdir = r"C:\temp"
service = "MyServiceName" # -- this in my case would be same/similar to name below called <This_is_the_name_of_maplayer>
sddraft_filename = service + ".sddraft"
sddraft_output_filename = os.path.join(outdir, sddraft_filename)
my_federated_server = "https://server.domain.com/webadaptor"
# Reference map to publish
aprx = arcpy.mp.ArcGISProject(<path_aprx_with_maps>)
m = aprx.listMaps(<This_is_the_name_of_maplayer>)[0]
# Create MapImageSharingDraft and set service properties
sharing_draft = m.getWebLayerSharingDraft("FEDERATED_SERVER", "MAP_IMAGE", service)
# The following will be good practice definitely
# But I ignored it for this test
#sharing_draft.federatedServerUrl = my_federated_server
#sharing_draft.summary = "My Summary"
#sharing_draft.tags = "My Tags"
#sharing_draft.description = "My Description"
#sharing_draft.credits = "My Credits"
#sharing_draft.useLimitations = "My Use Limitations"
# Create Service Definition Draft file
sharing_draft.exportToSDDraft(sddraft_output_filename)
# Stage Service
sd_filename = service + ".sd"
sd_output_filename = os.path.join(outdir, sd_filename)
arcpy.StageService_server(sddraft_output_filename, sd_output_filename)
# Share to portal
print("Uploading Service Definition...")
arcpy.UploadServiceDefinition_server(sd_output_filename, my_federated_server )
print("Successfully Uploaded service.")
... View more
02-13-2019
07:42 AM
|
1
|
6
|
3646
|
|
POST
|
Duh! - I think I should've answered this myself in the same breath with asking the question. Each new map gets the default name 'Layers" unless that's already taken, in which case it becomes "Layers1"... so simply referencing that new layer as "Layers" instead of the [-1] index works. As such: aprx.listMaps('Layers')[0].name = mxd.split('\\')[-1][:-4]
... View more
02-13-2019
07:25 AM
|
0
|
0
|
1989
|
|
POST
|
Background: I am tasked with rebuilding a bunch of web maps for ArcGIS Server (Enterprise) using set of MXD's behind existing map services. One reason I am doing it through ArcGIS Pro is to play with the new scale based symbologies for Map Image Layers versus creating multiple layers. At the same time, I want to script out map service publishing for any simple maps using arcpy. Starting with a large number of MXD's, I imported them into a blank APRX. Here is how I grab my list of MXD's: mxdpath = r'U:\pydev\portal\republish_hou\mxdlist.txt'
with open(mxdpath) as f:
mxdlist = [mxd.strip() for mxd in f.readlines()] Then I start importing the MXD's one by one as maps into a new blank project file, which I created inside ArcGIS Pro. import arcpy
aprx = arcpy.mp.ArcGISProject(r'c:\temp\blank.aprx')
for mxd in mxdlist:
#### To be able to see which maps are going in, I add the following print stmt
print("Importing the following....{0}".format(mxd.split('\\')[-1]))
aprx.importDocument(mxd,include_layout=False)
#### The following was to keep an eye on total count of maps
print("Currently {0} maps in Project file.".format(len(aprx.listMaps())))
#### Here I'm attempting to name the maps with the name of the source MXD
aprx.listMaps()[-1].name = mxd.split('\\')[-1][:-4]
aprx.saveACopy(r'c:\temp\no_longer_blank.aprx') This seemed to work fine for a small sample, 3-4 MXD's. In my case, I then tried web map #1 with has 32 MXD files, and it looked like it worked. len(mxdlist)
>32
len(aprx.listMaps())
>32 But when it look at the names of the maps, I find that some are missing, and have been replaced with names such as "Layers", "Layers1, "Layers2". cnt = 0
while True:
if aprx.listMaps()[cnt]:
print(cnt," ",aprx.listMaps()[cnt].name)
cnt += 1
else:
break In fact, there is a strange pattern of which names are missing: >0 Counties
1 Layers
2 Cities
3 Buildings
4 Roads
5 Rivers
6 Playgrounds
7 Lakes
8 Hospitals
9 Churches
10 Hydrants
11 Layers1
12 Rubberduckies
13 Monuments
14 PoliceStations
15 SevenElevens
16 ParkingLots
17 States
18 ZipCodes
19 Districts
20 Divisions
21 Layers2
22 Parks
23 Schools
24 Colleges
25 Geocaches
26 Hotels
27 GasStations
28 SwimmingPools
29 Museums
30 Cemeteries
31 Flamingos What's going on here? Each MXD has a name that's a valid string, that should be used for naming the map inside the APRX. Why does this fail for maps 1, 11, and 21? It looks like my reference to the last map in the list doesn't work. In fact, the maps called "Layers" contain the data from other "named" maps, e.g. 'States'. Then 'States' gets completely different input and not what should be coming from 'States.mxd'. Now, let's try this. Let's not try to name the maps at all. Let them remain nameless. When script finishes,... [m.name for m in aprx.listMaps()]
>['Layers',
'Layers1',
'Layers10',
'Layers11',
'Layers12',
'Layers13',
'Layers14',
'Layers15',
'Layers16',
'Layers17',
'Layers18',
'Layers19',
'Layers2',
'Layers20',
'Layers21',
'Layers22',
'Layers23',
'Layers24',
'Layers25',
'Layers26',
'Layers27',
'Layers28',
'Layers29',
'Layers3',
'Layers30',
'Layers31',
'Layers4',
'Layers5',
'Layers6',
'Layers7',
'Layers8',
'Layers9']
aprx.listMaps(0)[2].name
>'Layers10' So looks like the ordering of the maps in that list goes like 1,10,11,12,13,....2,20,21,22.... I'm sorry maybe there is a good reason for that. But it makes no sense to me. If you have a working solution to offer on how I should name my maps during import, please share. Maybe I've missed something in the documentation.
... View more
02-12-2019
03:23 PM
|
1
|
3
|
2455
|
|
POST
|
Currently in the process of re-publishing a number of map services to ArcGIS Server. Some of these make extensive use of definition queries on multiple instances of the same datasource. In a simple example, a feature class of oil & gas leases may be the source for multiple layers in the MXD, each with have a definition query on expiration date, to symbolize with different color by Q1, Q2, Q3... of a given year. Other scenarios may have dozens of layers using the same data source with a def query. Is it that (still) the best way to do it? I remember seeing that ArcGIS Pro offers functionality for using multiple definition queries on a layer/data source that can be selected (turned on/off). But I don't think there is a way to publish that out to a service. How about definition queries at the web level? JSAPI allows overriding feature symbology and offers a def query feature, right? Has anyone looked at how that performs compared to using a definition queries as described above?
... View more
02-06-2019
03:26 PM
|
0
|
2
|
3356
|
|
POST
|
Great thread... but I'm surprised it's been quiet here for almost a year. I'm a happy camper using the arcgis module (ArcGIS API for Python) for Portal administration - yes, it's a web API - and arcpy for more data-centric automation and processing. arcgis helps with managing users and content, arcpy lets me transform feature, feature classes, fields, etc. Where I'm struggling right now is in the space in between (or is it overlap?) when trying to publish data to server. As a heavy Jupyter Notebook user, I have both arcgis and arcpy installed in Python 3.6.5 (Anaconda) but the arcpy is different from what it's available in the laughable Python 2.7.13 that still gets installed under C:\Python27 in Windows when you install Desktop. The two flavors of arcpy are very different and most of the documentation is for the older version, some documentation doesn't seem to support either version. Where do I find some of the functionality from old arcpy in new arcpy? I asked a related question here when I ran into issues publishing to AGS from Python. Short version for the TLDR crowd: Any recipes for success for leveraging the full power of both APIs in Jupyter?
... View more
02-05-2019
01:43 PM
|
0
|
0
|
1662
|
| Title | Kudos | Posted |
|---|---|---|
| 1 | 08-16-2025 07:32 AM | |
| 1 | 02-09-2024 05:18 PM | |
| 1 | 02-04-2025 09:27 AM | |
| 1 | 03-22-2019 10:55 AM | |
| 1 | 03-05-2020 08:46 AM |
| Online Status |
Offline
|
| Date Last Visited |
a week ago
|