Python: Map Automation in ArcGIS Pro

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
well thank you for coming my name is Jeff Barrett and with me here is Jeff bolt we're going to be talking to you about Python math automation in ArcGIS pro I'm I work out of Olympia Washington but I'm with software development and and Jeff is out of Redlands but we work on similar teams we both work on our PI mapping in arcmap we work on our PI NP and Pro we work on layout we work on the layout SDK we do everything together and in fact there are some people in Redlands California that think there's just one Jeff they have no idea there's actually two of us that get a lot of this stuff done so we're going to tag team today like we do with everything else and so let's get going so what we hope to talk about today is just to kind of cover some bases and make you available to some resources that will help you get going with with either our cry mapping or our PI MP and then Jeff's going to talk about migrating migrating map documents and other documents into pro he's also going to talk specifically about migrating data sources and anything that you migrated to Pro and as we moved a lot of the arc PI mapping capabilities in dark GIS Pro we've made a lot of enhancements and we've proved upon how things worked so things are going to be easier for you perhaps more intuitive and we're going to spend a little bit of time talking about what some of those changes are moving to ArcGIS Pro and then I'm really excited to finish it off telling you about what we've done with exposing symbology to the arc PI NPAPI something that a lot of you requested to be able to do and in our PI mapping and we've always kind of drawn that line in the sand in terms of you know what's an authoring thing something you do in the UI and you save to an MXD versus something that you automate so we move that line in the stand and pro and we've exposed symbology and i'm excited to show you that so what Jeff and I do and a lot of other presenters do is we create these shortened URLs so what I'm showing you here right now is a really great shortened URL every URL com 8899 have to remember 8899 and that prefix and that will bring you to an ArcGIS online webpage that allows you to download a lot of samples that we make available both in our PI mapping for arcmap or our PI mp4 Pro you know I like most of you kind of just kind of beg and borrow from other people and tweak things and and always start from some other template and that's what we're trying to do my personal goal is to move a lot of these samples into github so that you have just another repository to be getting this stuff from but up you know here's just three of our most popular samples that get downloaded one that allows us to create dynamic tables in a map series so as you go from page to page you can see tabular data updating and it's all simulated using graphics and text elements another one is a layout manager where you can actually within one layout actually manage many different numbers of inset maps as you go from page to page and all that information is managed in a database and you can control what gets pulled in and out of a page really nice code to look at the last sample there and they're more a really highly requested item to scale to create strong index pages like street map pages to go along with your your maps and so that uses a third-party package site package called report lab and the compliments are epi very nicely another thing I just want to briefly mention and again this is another webpage so if we go to Israel comm 97 85 it brings us to this page and let me just cover a couple of the important point as you consider migrating octa-pie mapping to our PI MP and pro is it's all highlighted here obviously we're working with Python free a 64-bit install of Python one of the biggest changes and a lot of things that happens when when you migrate from from arcmap in crow it's a lot of your geoprocessing capabilities are just going to work in all those buffers clips all those analysis tools all those strips that you've written to work with GP just works but that's not the case with our hi mapping because our time mapping was very tied to ly our files and mxb files and all that has changed in pro right we don't have that well we support ly our files but we also support my rx file we support project files to not mxb so we can have multiple layouts in a project not just a single layout and you were always forced to have a single layout in and mxd so for those reasons we decided to give it a different kind of module name and it's just empty so if I talk about our PI mapping I'm talking about arc maps and Python math automation if I talk about our PI NP I'm talking specifically about Pro and it makes it a lot easier for us to separate those two different sets of scripts because when you move to ArcGIS Pro if you migrate any of those scripts over you're going to have to modify your scripts you have to it's just you know arc lighting dot map document does not exist some of the things is we moved many of the list functions so our PI dot mapping dot list data frames list layers list you know elements it just went on and on what we did is we took a lot of those list functions and we moved them directly onto the objects themselves so it's a lot easier to kind of it's more intuitive I think in pro to kind of figure those things out and here's a very simple object model diagram to get into our PI MP you either start with a layer file or a project and if you wants to get to a list of maps than off of the project you get to a list of maps but then from that map you can get to bookmarks tables and layers rather than doing it all at the project level just very straightforward subtle changes a lot of these a lot of these types of modifications you'll make or just search and replaces it's not that difficult the logic is all very very very similar our export functions have move before I used to be able to export a data frame or export a layout all from the route art PI mapping export to PDF but you use different parameters depending upon whether or not you're exporting a layout or a data frame so what we've done is we've just put different export functions on the two different classes makes it a lot easier so anyway this is a great topic to go through and of course the samples are going to help you and now what I'm going to do is I'm going to let Jeff talk about migrating map documents and data sources that I'll come back and talk about Tim Balaji okay thanks Jeff as Jeff already said my name is Jeff bulbs I work in the Redman's office I work on the layout team in the arc PI mapping team and what I'm going to talk about today is I'm going to talk about importing 10x documents into ArcGIS Pro and then I'm going to talk about updating data sources so you've just gotten your hands on ArcGIS CRO and maybe you have a ton of map documents and globe documents and seeing documents that you want to use in our GIS Pro and maybe you have so many that you want to script this workflow and we have the import document function to do that and how this function works is that it'll take a path to a MXD or a globe document or a scene document and then import it into our GIS pro project so the diagram and the code on this slide here is demonstrating a workflow where you have a whole bunch of MSDS and for each MXD you want to import it into its own ArcGIS pro project so let's look at this code here so first off I'll just use core Python to loop through all the MX DS in the folder and then for each MXD I'm going to reference a template project and then I'm going to import the MXD into that template project and then save it out to its own filename we also have off of the import document function this boolean parameter called include layouts and this is useful when you're importing multiple MX d's into a single arcgis pro project so for example if you're consolidating like 50 map documents into a single arcgis pro projects you may not want 50 layouts clogging up your project so keep in mind that in MXD it always has a layout but a lot of people they just work in data frame mode and they don't even look at the layout so that's useful for this type of workflow so in the diagram and the code here I'm consolidating a bunch of different types of 10x documents and consolidating them into a single ArcGIS Pro project so let's actually run this in pro so I have a blank ArcGIS Pro project right here there's nothing in it and I'm just going to run some stuff in the Python window here so I'm going to load in that same script from the slide that's just going to import a bunch of stuff in here and while that's running I'll tell you what it's doing so the first line is just referencing the currently open project then I'm importing an MXD and I'm including the layouts the next MXD I'm importing I'm saying to not include the layout so I'm saying that to false and then I also import some globe and scene documents and that script finished running and let's look at what it did so I'll expand the Maps node and the project window here and you can see that it brought in these data frames and then if I expand the layouts node you can see it just brought in lay out as I specified in my script here okay so that's importing documents into Pro I'm going to switch gears a little bit now and talk about updating data sources in pro and updating data sources will also kind of tie into the whole migrating to pro story and updating data sources was always something you could do in arcmap through Python and I think we've improved on it a little bit in pro and one of the classic problems this workflow solves you could kind of see in the diagram of top left here where I have a whole bunch of projects and for whatever reason you know I might have ten or hundreds or thousands of projects even in but for whatever reason the data is gone or it's moved or it's changed for example I may have converted all my personal geodatabase data to file geodatabase or maybe I put all my data into enterprise geo database or maybe the folder structures of my projects changed or what happened to me when I was working in tech support is that my Enterprise Server actually literally caught fire and it was even behind the firewall but you may need this scripts like all these projects to point to a new server for example like if you if you if your enterprise geo database server you get a new one with a new name or something like that and so we have the dysfunction now in Pro called update connection properties and it works off of a project a map layer the table or layer file and you can kind of think of it as like a fine and replace for data sources so if you look at the sample at the bottom here I'm doing a find on this path and that's a file geodatabase and then we're going to replace it with this path which is an enterprise geo database and we also have this auto-update joins and relates boolean parameter and what that does is that it will automatically update the the joins and relates on your layers if the data is in the new workspace so let's look at a couple examples so the first example here I'm referencing a project and then I'm just replacing a folder and I'm using like just the folder name I could have put the full path the folder here and it's just doing a find and replace on that folder name for all my layers data sources of that project the second example here is I'm updating my data sources from a personal geodatabase to a file geodatabase a couple things to note with this little snippet is that I'm doing this instead about the project I'm doing it at the map level and this ties into the migration story a little bit because Pro doesn't support personal geodatabases as you've probably heard already and that has something to do with the 32x Microsoft Access format being incompatible with 64-bit environments so if you're using personal geodatabase you'll have to convert that to something else for example you can just copy all the data into a file geodatabase and the last example is just showing a similar workflow but it's working on a layer file instead now in pro the new layer file format is Lyr x and what's different with layer files and pro is that you could put as many layers into a layer file as you won so being able to manage those data sources similar to how you manage data sources in a project is useful as well so let's do a little demo here so I'm going to go back to ArcGIS pro and I'm going back to the same project where I previously imported a bunch of stuff into it and I'm going to look at this data frame here or rather this map called layers and oh I got a problem here my map is blank I got the so basically the data is broken I got the dreaded red exclamation mark here so let's look into the layer properties of this layer to figure out why it's broken so go to the source tab and you can see that's personal geodatabase and like I said personal geodatabase isn't supported so I need to fix that and then if I go into the joins tab on the layer you can see that I have a join to a table in that same personal geodatabase so I need to fix that as well now if I wanted to fix this in the UI be really easy I would just have to fix it for one and it automatically fix it for all the broken layers but if I had a whole bunch of projects that had this problem I'd want to script this obviously and this is how you would do it so I'm going to load a script up here and I'll execute that and while that's running what I'm doing is from the project on calling update connection properties I'm searching for this personal geodatabase I'm replacing it with this file geodatabase so this file geodatabase I already created myself it has all the same layers as the personal geodatabase and that have also set auto-update joins and relates equal to true and you can see the script ran and it fixed the data sources because it's drawing in the map now and if I look at my layer properties it's now accessing a file geodatabase and if I look at the joining properties you can see that it fixed the join as well okay let's talk about a bit more of an advanced workflow something new at Pro is that for Python developers we expose the entire layer data source object model as a Python dictionary and so you could use this if you needed more fine-grained control of what's available in that update connection properties function that I just showed you and it's useful when dealing with workflows where you need to change joins and relates properties or the connection properties of an enterprise geo database so how do you use this well first off you just rep reference layer in the map and I'm just going to show you the dictionary first and so you reference a layer then you reference its connection properties and you'll notice here that I'm using the P print module and P print is just a way to display the dictionary and it easy to read format and this is what a simple geo database layer connection properties dictionary looks like so if you wanted to you could write a script that dug into this dictionary and changed any of these properties now like I said this is more useful for workflows where you have joins and relates and this dictionary is a layer that has a couple of relates on it and don't worry about reading everything on the slide or understanding everything in this dictionary I just want to show you that there's a lot of properties that as a developer you're able to dig into these dictionaries and change anything you want so let's look at the dictionary a little bit so first off this part of the dictionary is the layers database this is a list of all the relates that are on the layer so there's a couple relates on here and there in a list the first one is right here so this is the relate definition so for example as a developer you'd be able to write a script that would go in and change joins and relates properties without actually having to drop the join and relate and recreate it and that can be pretty powerful okay so let's do a demo with this so first off let's just look at a connection properties dictionary so like I said this layer that the Mexico layer has a join on it so let's just look at the dictionary so first off I import the P print module then I reference the layer then I get its connection properties and then I print them and so this is what the dictionary looks like for a layer that had the join on it so how would you update this if you look let's say this is our imaginary workflow let's say your boss says ok out of all the many projects that we use and that use this Mexico layer and this join table the foreign key that that join is based on has changed to a new field so can you go ahead and update all those projects please now in the past that have been extremely difficult to do with Python I don't even think you'd be able to do with Python you might be able to do it with our objects or even if you had to do it by hand it would be a very time-consuming process of looking at all your layers finding the ones that use that foreign key dropping the join and recreating it so this is the piece of the dictionary that I want to change that's the foreign key and that's the field name so I want to write a script that's going to dig into there and change that and this is how you do it so this is just using core Python dictionaries to access that key and giving it a new field name and then to commit it I'm doing this off of the layer objects I'm calling update connection properties and then passing it in and passing in the new dictionary now another way you could do this this might be a little bit more powerful is off of the project I could call update connection properties and so this will fix all everything in the the action the whole entire project and what I'm doing is I'm going to do a find and replace on that dictionary key value pair so I'm going to search for the the old dictionary key value pair which is here and again that reference is this part and then I'm going to do a replace on it so I'm going to replace it with this dictionary key value pair so I'm essentially doing a find and replace on partial dictionary key value pairs which is kind of interesting so I'll run that and we'll see what it did I'll go back to my Mexico layer go to the joins tab and you can see it's got the new foreign key now okay so that was a little bit of an obscure workflow but it shows you the power of being able to dig into those dictionaries and be able to change any of those properties that you want so in this last example I'm going to update a project with a new enterprise geo database instance and server so this is the kind of classic workflow of you get a new database server with a new name everything else is the same it's the same database same feature classes same operating system authenticated users and you don't want to create a whole ton of new connection files for all your users you just want to do one thing and that's drill into each of those projects and change the server name so first off let's just look at the connection properties dictionary for a Enterprise geo database layer so again I get the layers connection properties and then I display them I display it right here now if you look at the highlighted parts this is the connection properties for the the enterprise geo database server so this will be the same for all the layers that reference that server and you could see in here my old server name is Dunbar and I have a new server my new servers named Shakespeare so I want to dig in all these layers and change Dunbar to Shakespeare and this is how you would do it so first off I would make a dictionary that defines the connection properties that I'm going to search for so this is the old server name so this is Dunbar and then I defined a new a new connection properties dictionary that has the new server name and that's Shakespeare and then finally I do a find and replace on the project updating just those relevant pieces of the connection properties and so that will update all the applicable layers to the new database server and without having to create new database connection files and without needing to know all my users user names and all their passwords so that could be potentially pretty useful and back to you Jeff for your signal symbology so I just want to remind you that everything that Jeff talked about again is is on the arc PMP helped in pro and you know we pride ourselves on our documentation and the number of samples that we make available so if you were to just scroll through this one topic hold updating and fixing data sources we bring you through all of the different parameters but then all of the different workflows for for you know going from a variety of different types of databases and scenarios to other scenarios joins or changing versions and so anyway just please check out updating and fixing data sources and again just copy and paste and into stocks closed lower how about that sorry about that so I'm moving right along here I want to talk a little bit about symbology I need to look down here so symbology is something that we're able to do partially with our PI mapping in the sense that you could automate changing your renders so you could go from a graduated color or you could connect to something that's rendered with graduated colors and you could get into the individual class breaks and change the descriptions and and modify the number of classes and and we allow you to automate that but we didn't allow you to drill down into the individual classes and get to the individual symbols and modify their color models or their individual color definitions so before in our PI mapping you couldn't change the color red to blue you know and some people wanted to change the color red to blue and we but we would kind of argue well there's a way of doing that you can just define a selection symbol and do a query and you can automatically change something from red to blue if you select your if you set your selection symbol to be blue if it was previously red you know you could do little tricks like that but you know the more we spoke to you the more you were giving us you know real well defined reasons for wanting to get into the symbology model and modify that so as we migrated things into pro we made lots of improvements we've expanded the API to give you some of those capabilities and so that our Q is a pro 1.4 we'd exposed a good portion of symbology so here's a very simple object model that I've put together and I will be putting in this to help but it's not in the 1.4 health yet but anyway we connects to a layer we all know how to find a layer in our PI NP and from that layer we can get to its symbology using the dot symbology property and once we have the symbology that's returned there are many different renderer types okay and so we have a simple renderer and this is just an abbreviated class name that's actually called simple renderer and and and so that's single symbol in the UI that's what you know of single symbol but once we get to that simple renderer we can get to the symbol that makes up that red or blue and we can get to a variety of properties like the outline color or the main color and we can also navigate once we have a symbol we can also search the Style galleries to apply existing styles to our current symbol that's one render we also support graduated color renderer so again we can get to the individual class breaks and for each class break which has an item in a description it also has a symbol and we can do the same sort of thing we can also work with graduated symbols renderer it has a little it has a few more properties available to it because you can modify its background symbol and you can also modify its template symbol so you can change everything at once if you want to just like you can do in the UI and we've modeled a lot of these names property names similar to how they work in the dotnet SDK so it's very very similar it'd be natural for you to jump and then finally we also support unique value so with unique value those items can be organized into groups you have the individual groups and then items within the group and each item has a symbol and then finally with three of the renderers we can also customize and modify a color ramp so this is what we support at 1.4 and what we're working on for - 2.0 is just extending the number of color models and we're going to be focusing on raster renderers next so we want to get classified and stretched and unique value make some of those available so right now what we have and one dot for our vector renders so let me show a demonstration here so what I have here is a very simple set of layers I have eight polygons and capital cities and if we look at the capital cities renderer you can see that it's using single symbol or the simple renderer what I want to do is just load some basic code in here and nothing new here right so we're going to the NP library we're grabbing the arcgis project we're grabbing the current project we're getting the first map and we're finding the first layer that's called capital cities but again once we get to that layer we're grabbing its symbology and once we have that symbol variable we can start doing things like hey do I want to get the renderer or do I want to update the render well in this case they just want to get the renderer for now and once I have the renderer then of course I can set things like symbol label description I want to I want to look at the symbol and once I had the symbol well then good I can do things depending on the type of symbol I'm working with because this happens to be a point symbol right it could be an area or a line symbol and there'll be different sets of properties available to you but for this point symbol I can change the angle to color the name the outline color size you know simple things like that of course I can use a couple of different methods here that allow me to work with the style gallery to work with those symbols so it's very straightforward very easy as you up as you navigate from one object to the next so I'm just going to backspace here I'm going to just load some code so what I'm doing is I'm taking that symbol symbology actually not the symbol but the symbology and I'm updating its render and going from simple symbol I want to modify it to the unique value render okay and then when I do that I want to set its fields property to use the field called capital and then of course I'm going to update the layer with that symbol and if we look over here now you can see in the symbology pane that we've updated it to unique values we've updated the field to capital and it picks some default color ramp or color scheme and you're not seeing a lot of contrast down here you're not seeing DC kind of pop from the other state capitals and and you know that's also true in the in the and the items down here so you know obviously we can apply different color ramps so I'm going to use this one down here it's nice contrast key colors it's called set one three classes so let me come over here and I'll just do some typing and I'll type sim renderer dot zero I'll type color ramp and I'll say hey that's equal to our PI MP color ramp which is a function we have that allows us to search for color and by name so I'm going to type set one three classes and I'll hit enter and of course nothing happened because now I have to take my layer take it symbology property and set it equal to that symbol variable that I've just kind of updated and I hit enter and lo and behold you know we're seeing some of those changes not too exciting but very practical and very easy and that's what we really try and do is make it very intuitive and easy with just a few lines of code you can do some important things so now I want to modify it even more I don't like those simple little circles and I want to change the symbology altogether so let me just load another set of code here aren't you glad it doesn't say like script 29 right now I don't have that many more to go so anyway going to the top here I'm doing two things so I have two groups of code they're both identical just slightly different by one character but first I'm going to work with my national symbol okay my Washington DC symbol so we go to the symbol we go to the renderer and then within a unique value renderer we have brut right so if we look down here in the pane we're just seeing one group if I were to right-click and say move value to group you can create multiple groups inside of the unique value render right so I'm just going to escape out of that so I only have one group and these are all zero based indices so I'm grabbing the first and only group and then I'm grabbing the first item in that group which happens to be our national capital and I'm grabbing it symbol and now that I have it symbol I'm going to apply another symbol from the point gallery and I'm just going to use star one but then I'm going to override those style properties and I'm going to then take the color and very similar to how Jeff talked about using dictionaries to modify connection properties and all the permutations we do the same thing with with symbology now so basically with a symbol we have a key value and this happens to be our color model so we support multiple color models I can change it from RGB to HSV or CMYK and there are six color models that we support the same stick color model we support in the user interface two of them are read-only lab and grayscale currently are read-only but anyway here I'm going to go in and I'm going to I'm going to use the RGB color model and I'm going to set its properties its RGB values to be red essentially and then this last value is opacity or alpha it's the opposite of transparency so in the UI you see transparency so a hundred percent opacity is solid fill right and then I'm going to do the same thing all over again for my state symbols except this time I'm going to get item 1 instead of item 0 and then again I'm just simply going to update my layer symbology and voila ok just with a few lines of code we've gone in and we've used existing styles and we've applied them to our layer now finally what I want to do is I want to take my state polygons and I want to modify them to introduce another renderer type and I also want to introduce some transparency so here again I'm just finding another layer this time called State polygons again I'm grabbing it symbol I'm updating its renderer to be graduated colors I'm going to use the classification field shape area set the number of breaks right so the number of classes I have and then I'm going to iterate through each one of those breaks so in this case I'm going to iterate 6 times and I'm going to grab the color of each class break item right whatever it is I'm going to grab it and I'm not going to change its color all I'm going to do is in this case using its color model HSD I'm going to grab the last property right remember with RGB I had the fourth property there CMYK you're going to have a fifth property so you don't necessarily know I want to grab the last property property and I'm going to change the opacity value or the Alpha value to 50 this is the only time that opacity equals transparency 50% transparent ok and then I'm going to set that color and then I'm going to apply it to the renderer into the symbology and we've done it ok so you guys have been asking for this raster colorizer czar coming at at 2.0 and and beyond we'll be introducing more but that's all that I want to show you today interactive powerpoint here so some other things that we're working on is you know you may have heard during the plenary that's the year 2017 is kind of the year of equivalency we're trying to get a lot of a lot of that arcmap capability into arcgis pro chef and I have a lot of work to do to continue bringing stuff that you could do in arcmap and bringing that into throw so for example raster colorizer don't there yet time isn't there yet that's something we need to work on we just don't have enough of it a bad joke okay thank you what else data-driven pages and all of that capability you had a data different page object in our PI mapping and infer we call it map series we don't have that ability to connect to the map series object but it really doesn't matter because really all map series is is a bunch of extent we can control that with Python anyway but anyway those are those are just a few few more things that we need to to bring in to InterPro to be more arcmap equivalent but i think you're going to find migrating into pro and if you've learned this inside of arcmap it's going to kind of just come very naturally inside a pro and all the language is very similar we just may have rearranged the objects a little bit but also today if you're interested in other arc PI mapping our PI empty related things there's at 5:30 to 6:30 there's enabling high-quality printing or web-based printing using our PI mapping that happens today and then lastly please share your survey these surveys help us with our quality they help us with room size and you know we want to hear your feedback and we also want to hear your feedback in terms of you know you can either ask the question now or come up to us later we want to find out if you're using it if there's any roadblocks you run into we constantly collect those requirements and we're trying to make it a better product constantly for you so thank you for coming and we'll take questions any questions oh sure um the second URL I showed the question was I forget ninety seven eighty five or something like that yes ninety seven eighty five another question here the question is she's very excited about modifying symbology does it work for arcgis on online layers if they are using any one of those renderers than yes okay but we're just limited to those renders so so are you talking about symbology or everything we talked about today so so okay so the question was everything we showed today will it run outside of the application and the answer is yes so you know I obviously for demonstration purposes I connect to the current project and I do everything in the Python window or script tool but you want to be able to run these as automated scripts without the application being open at all the issue the one issue with that though is having data sources that have Web Services right if if you need the application open if you have some sort of password protected web service correct I don't know if they'd be relevant to this stuff but that would be if you're sharing to a hosted service and then you have that problem but basically we just do it all in the app just because it's easier to to see in this environment you know you could to actually see the results of the scripts but yeah most people are going to be writing this stuff out of the app and it's it's designed to work that way it we're all about automating over here this would be for all the okay so the question is how would you deal with changing the server if a whole bunch of people are using that server and this is just going to imagine writing a script that will go through all the MX DS that your organization uses and if your your organization is using server a but you guys got a new server called server B you could navigate through all those projects and point them all to the new server okay that would if if you wanted to yes you could do that if you wrote a script that would go in everybody all the machines on that your company has that would get pretty sophisticated but technically you could do it but your point is valid you know Mary and John have their own local machines they have their own local set of a PR X's and either they run the scripts from some shared library they run on their machine or you would have to do some sort of you know job that goes out and updates their their project folders so the question is when migrating from personal geodatabase to file geodatabase can you write a script that would convert all your personal geodatabase geodatabases to file geodatabase and yes you could do that as well there's a GP tool that'll copy the data to a new the new geo database so they'd be completely outside of our library right that has nothing to do with map automation but you would use Coar occupy GP functions to create feature class load you know copy data whatever the function you choose to use to simulate that whole you know manual process of moving all that data to another it could be it depends on how you want to do it you could probably do it in the same script or it may be easier to have to separate these close yeah yeah the other question so the question is are these power points available all of us all the presenters are responsible for making these available immediately after the conference give it one or two weeks and they're going to be making them all available in PDF format so yes it will be available in PDF format with a little bit of a time lapse okay about one to two weeks if you absolutely want it I can give you my cards and if you don't get it after the announcement and I can make it available to you anyone else location of Jeff and I are hanging out in the showcase so we'd love to talk to you get your requirements get your ideas I'm either at the pro aisle and Jeff is at the pro island or I'm at the holistic testing Island which is within eyesight so please come talk to us and thank you for coming [Applause]
Info
Channel: Esri Events
Views: 9,142
Rating: 5 out of 5
Keywords: Esri, ArcGIS, GIS, Esri Events, arcpy.mapping, Python, data sources
Id: evRKO70L_g8
Channel Id: undefined
Length: 49min 44sec (2984 seconds)
Published: Wed Mar 29 2017
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.