{"id":414072,"date":"2019-01-22T13:41:14","date_gmt":"2019-01-22T21:41:14","guid":{"rendered":"http:\/\/www.esri.com\/arcgis-blog\/?post_type=blog&#038;p=414072"},"modified":"2022-04-18T17:46:34","modified_gmt":"2022-04-19T00:46:34","slug":"python-raster-functions-github","status":"publish","type":"blog","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/imagery\/python-raster-functions-github","title":{"rendered":"A Treasure Trove of Python Raster Functions"},"author":8222,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","format":"standard","meta":{"_acf_changed":false,"_searchwp_excluded":""},"categories":[22931,22941],"tags":[115262,24341,29991,35201,24661],"industry":[],"product":[36571,36561,36991],"class_list":["post-414072","blog","type-blog","status-publish","format-standard","hentry","category-imagery","category-mapping","tag-imagery","tag-python","tag-raster-analysis","tag-raster-function-templates","tag-raster-functions","product-arcgis-enterprise","product-arcgis-pro","product-arcgis-desktop"],"acf":{"short_description":"Python raster functions published to GitHub can help you accomplish a new workflow or customize an existing process. ","flexible_content":[{"acf_fc_layout":"content","content":"<p>Did you know there is a huge repository of powerful Python Raster Functions that you can use for raster analysis and visualization? On the <a href=\"https:\/\/github.com\/Esri\/raster-functions\/tree\/master\/functions\">Esri\/raster-functions repository on GitHub<\/a>, you can browse, download, and utilize customized raster functions for on-the-fly processing on your desktop or in the cloud.<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":414692,"id":414692,"title":"PythonRasterFunctions2","filename":"PythonRasterFunctions2.png","filesize":130298,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/01\/PythonRasterFunctions2.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/imagery\/python-raster-functions-github\/pythonrasterfunctions2","alt":"Esri's raster functions GitHub repository","author":"8222","description":"","caption":"","name":"pythonrasterfunctions2","status":"inherit","uploaded_to":414072,"date":"2019-01-18 23:16:21","modified":"2019-01-22 21:39:42","menu_order":0,"mime_type":"image\/png","type":"image","subtype":"png","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":610,"height":486,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/01\/PythonRasterFunctions2-150x150.png","thumbnail-width":150,"thumbnail-height":150,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/01\/PythonRasterFunctions2-300x239.png","medium-width":300,"medium-height":239,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/01\/PythonRasterFunctions2.png","medium_large-width":610,"medium_large-height":486,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/01\/PythonRasterFunctions2.png","large-width":610,"large-height":486,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/01\/PythonRasterFunctions2.png","1536x1536-width":610,"1536x1536-height":486,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/01\/PythonRasterFunctions2.png","2048x2048-width":610,"2048x2048-height":486,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/01\/PythonRasterFunctions2-584x465.png","card_image-width":584,"card_image-height":465,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/01\/PythonRasterFunctions2.png","wide_image-width":610,"wide_image-height":486}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<h2>What are Python raster functions, you ask?<\/h2>\n<p>A raster function is a sneaky way to perform complex raster analysis and visualization without taking up more space on your disk or more time in your day, with on-the-fly processing. A <strong>single raster function<\/strong> performs an analysis on an input raster, then displays the result on your screen. No new dataset is created, and pixels get processed as you pan and zoom around the image. You can connect multiple raster functions in a <strong>raster function chain<\/strong>\u00a0and you can turn it into a <strong>raster function template<\/strong> by setting parameters as variables.<\/p>\n<p>A <strong>Python raster function<\/strong> is simply a custom raster function. <a href=\"http:\/\/pro.arcgis.com\/en\/pro-app\/help\/data\/imagery\/list-of-raster-functions.htm\">A lot of raster functions <\/a>come with ArcGIS out-of-the-box, but if you don&#8217;t find what you&#8217;re looking for or you want to create something specific to your needs, you can script your own with Python.<\/p>\n<p>There are a lot of Python raster functions already written and posted for everyone to use, and <a href=\"https:\/\/github.com\/Esri\/raster-functions\/wiki#image-processing-and-analysis\">they&#8217;re easy to download and use in ArcGIS<\/a>. And some of them are unbelievably cool.<\/p>\n"},{"acf_fc_layout":"content","content":"<h2>For example: Topographic Correction function<\/h2>\n<p>The Topographic C Correction function, written by Gregory Brunner from the St. Louis Regional Services office, essentially removes the hillshade from orthophotos. As you can imagine, imagery over mountainous areas or regions with rugged terrain can be difficult to classify accurately because pixels may belong to the same land cover class but some fall into shadow due to varying slopes and aspects. With the topographic correction function, you can get a better estimate of pixel values that would otherwise be impacted by hillshade. The result is a sort of flattening of the image, and it involves some fairly complex math.<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":415342,"id":415342,"title":"SidebySide","filename":"SidebySide.png","filesize":776497,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/01\/SidebySide.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/imagery\/python-raster-functions-github\/sidebyside-2","alt":"Hillshade removal effect","author":"8222","description":"","caption":"","name":"sidebyside-2","status":"inherit","uploaded_to":414072,"date":"2019-01-22 16:27:56","modified":"2019-01-22 21:39:25","menu_order":0,"mime_type":"image\/png","type":"image","subtype":"png","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":1000,"height":362,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/01\/SidebySide-150x150.png","thumbnail-width":150,"thumbnail-height":150,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/01\/SidebySide-300x109.png","medium-width":300,"medium-height":109,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/01\/SidebySide-768x278.png","medium_large-width":768,"medium_large-height":278,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/01\/SidebySide.png","large-width":1000,"large-height":362,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/01\/SidebySide.png","1536x1536-width":1000,"1536x1536-height":362,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/01\/SidebySide.png","2048x2048-width":1000,"2048x2048-height":362,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/01\/SidebySide-826x299.png","card_image-width":826,"card_image-height":299,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/01\/SidebySide.png","wide_image-width":1000,"wide_image-height":362}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<h2>Why should you care?<\/h2>\n<p>Okay, so now you know there&#8217;s a repository of Python raster functions. What&#8217;s next?<\/p>\n<ol>\n<li><strong>Explore the functions you may need.<\/strong><br \/>\nSome of the functions on the repository were written for specialized purposes and aren\u2019t included with the ArcGIS installation, such as the <a href=\"https:\/\/github.com\/Esri\/raster-functions\/blob\/master\/functions\/TopographicCCorrection.py\">Topographic C Correction<\/a> function (above) or the <a href=\"https:\/\/github.com\/Esri\/raster-functions\/blob\/master\/functions\/LinearSpectralUnmixing.py\">Linear Spectral Unmixing<\/a> function [contributed by Jacob Wasilkowski, also from the St. Louis Esri Regional office].<\/li>\n<li><strong>Try writing your own Python raster function.<\/strong><br \/>\nA lot of what\u2019s on the GitHub repository is already in the list of out-of-the-box raster functions, but you can open the Python scripts associated with each one, customize them, and save them as new Python raster functions. This can be a great learning tool for those new to the process.<\/li>\n<li><strong>Watch the repo for more functions<\/strong>.<br \/>\nThere are currently over 40 functions listed, and we are continually adding more.<\/li>\n<li><strong>Contribute!<br \/>\n<\/strong>Have you written something that you can share with the broader community? Do you have ideas for cool raster functions? Add to the conversation by commenting on <a href=\"https:\/\/community.esri.com\/community\/gis\/imagery-and-remote-sensing\/blog\/2019\/01\/22\/a-treasure-trove-of-python-raster-functions\">GeoNet<\/a>.<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<h2>Get Started<\/h2>\n<p>To easily access all the Python Raster Functions in the GitHub repository, simply click the Clone or Download button on the\u00a0<a href=\"https:\/\/github.com\/Esri\/raster-functions\">repository code page<\/a>, and choose to download the raster functions as a ZIP file.<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":415352,"id":415352,"title":"CloneorDownload","filename":"CloneorDownload.jpg","filesize":20497,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/01\/CloneorDownload.jpg","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/imagery\/python-raster-functions-github\/cloneordownload","alt":"Click download ZIP button to get the full repo","author":"8222","description":"","caption":"","name":"cloneordownload","status":"inherit","uploaded_to":414072,"date":"2019-01-22 16:40:21","modified":"2019-01-22 21:39:07","menu_order":0,"mime_type":"image\/jpeg","type":"image","subtype":"jpeg","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":362,"height":216,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/01\/CloneorDownload-150x150.jpg","thumbnail-width":150,"thumbnail-height":150,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/01\/CloneorDownload-300x179.jpg","medium-width":300,"medium-height":179,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/01\/CloneorDownload.jpg","medium_large-width":362,"medium_large-height":216,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/01\/CloneorDownload.jpg","large-width":362,"large-height":216,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/01\/CloneorDownload.jpg","1536x1536-width":362,"1536x1536-height":216,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/01\/CloneorDownload.jpg","2048x2048-width":362,"2048x2048-height":216,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/01\/CloneorDownload.jpg","card_image-width":362,"card_image-height":216,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/01\/CloneorDownload.jpg","wide_image-width":362,"wide_image-height":216}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<p>Extract the zip folder to your disk, then use this\u00a0<a href=\"https:\/\/github.com\/Esri\/raster-functions\/wiki#using-a-custom-function\">helpful Wiki<\/a>\u00a0to read about using the Python Raster Functions in ArcGIS Pro.<\/p>\n<p>For an example tutorial on using the Python Raster Functions,\u00a0<a href=\"https:\/\/www.esri.com\/arcgis-blog\/products\/imagery\/imagery\/new-aspect-slope-raster-function-now-available\/\">check out the blog on the Aspect-Slope function<\/a>.<\/p>\n<p>&nbsp;<\/p>\n<p>Enjoy exploring!<\/p>\n"}],"authors":[{"ID":8222,"user_firstname":"Julia","user_lastname":"Lenhardt","nickname":"Julia L","user_nicename":"jlenhardt","display_name":"Julia Lenhardt","user_email":"JLenhardt@esri.com","user_url":"","user_registered":"2018-08-03 17:12:51","user_description":"Julia is a product engineer on the Raster team. She has been with Esri since 2014 and has a background in remote sensing and GIS for environmental research. In addition to image analysis, she has a passion for music, running, good food and animal welfare.","user_avatar":"<img data-del=\"avatar\" src='https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/10\/Me.jpg' class='avatar pp-user-avatar avatar-96 photo ' height='96' width='96'\/>"}],"related_articles":"","card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/01\/mapssmall.jpg","wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/01\/Maps.jpg"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.9 (Yoast SEO v25.9) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Python Raster Functions &amp; Out-of-the-Box Repository<\/title>\n<meta name=\"description\" content=\"Python raster functions posted on Esri&#039;s GitHub repository can help you get started with custom on-the-fly raster processing in ArcGIS.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/imagery\/python-raster-functions-github\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"A Treasure Trove of Python Raster Functions\" \/>\n<meta property=\"og:description\" content=\"Python raster functions posted on Esri&#039;s GitHub repository can help you get started with custom on-the-fly raster processing in ArcGIS.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/imagery\/python-raster-functions-github\" \/>\n<meta property=\"og:site_name\" content=\"ArcGIS Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/esrigis\/\" \/>\n<meta property=\"article:modified_time\" content=\"2022-04-19T00:46:34+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@ESRI\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":[\"Article\",\"BlogPosting\"],\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/imagery\/python-raster-functions-github#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/imagery\/python-raster-functions-github\"},\"author\":{\"name\":\"Julia Lenhardt\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/dd72385e82420c28c64ee1e347f8e26b\"},\"headline\":\"A Treasure Trove of Python Raster Functions\",\"datePublished\":\"2019-01-22T21:41:14+00:00\",\"dateModified\":\"2022-04-19T00:46:34+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/imagery\/python-raster-functions-github\"},\"wordCount\":7,\"publisher\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#organization\"},\"keywords\":[\"Imagery\",\"python\",\"raster analysis\",\"raster function templates\",\"raster functions\"],\"articleSection\":[\"Imagery &amp; Remote Sensing\",\"Mapping\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/imagery\/python-raster-functions-github\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/imagery\/python-raster-functions-github\",\"name\":\"Python Raster Functions & Out-of-the-Box Repository\",\"isPartOf\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#website\"},\"datePublished\":\"2019-01-22T21:41:14+00:00\",\"dateModified\":\"2022-04-19T00:46:34+00:00\",\"description\":\"Python raster functions posted on Esri's GitHub repository can help you get started with custom on-the-fly raster processing in ArcGIS.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/imagery\/python-raster-functions-github#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/imagery\/python-raster-functions-github\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/imagery\/python-raster-functions-github#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.esri.com\/arcgis-blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"A Treasure Trove of Python Raster Functions\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#website\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/\",\"name\":\"ArcGIS Blog\",\"description\":\"Get insider info from Esri product teams\",\"publisher\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.esri.com\/arcgis-blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#organization\",\"name\":\"Esri\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Esri.png\",\"contentUrl\":\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Esri.png\",\"width\":400,\"height\":400,\"caption\":\"Esri\"},\"image\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/esrigis\/\",\"https:\/\/x.com\/ESRI\",\"https:\/\/www.linkedin.com\/company\/5311\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/dd72385e82420c28c64ee1e347f8e26b\",\"name\":\"Julia Lenhardt\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/10\/Me.jpg\",\"contentUrl\":\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/10\/Me.jpg\",\"caption\":\"Julia Lenhardt\"},\"description\":\"Julia is a product engineer on the Raster team. She has been with Esri since 2014 and has a background in remote sensing and GIS for environmental research. In addition to image analysis, she has a passion for music, running, good food and animal welfare.\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/author\/jlenhardt\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Python Raster Functions & Out-of-the-Box Repository","description":"Python raster functions posted on Esri's GitHub repository can help you get started with custom on-the-fly raster processing in ArcGIS.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/imagery\/python-raster-functions-github","og_locale":"en_US","og_type":"article","og_title":"A Treasure Trove of Python Raster Functions","og_description":"Python raster functions posted on Esri's GitHub repository can help you get started with custom on-the-fly raster processing in ArcGIS.","og_url":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/imagery\/python-raster-functions-github","og_site_name":"ArcGIS Blog","article_publisher":"https:\/\/www.facebook.com\/esrigis\/","article_modified_time":"2022-04-19T00:46:34+00:00","twitter_card":"summary_large_image","twitter_site":"@ESRI","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":["Article","BlogPosting"],"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/imagery\/python-raster-functions-github#article","isPartOf":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/imagery\/python-raster-functions-github"},"author":{"name":"Julia Lenhardt","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/dd72385e82420c28c64ee1e347f8e26b"},"headline":"A Treasure Trove of Python Raster Functions","datePublished":"2019-01-22T21:41:14+00:00","dateModified":"2022-04-19T00:46:34+00:00","mainEntityOfPage":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/imagery\/python-raster-functions-github"},"wordCount":7,"publisher":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#organization"},"keywords":["Imagery","python","raster analysis","raster function templates","raster functions"],"articleSection":["Imagery &amp; Remote Sensing","Mapping"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/imagery\/python-raster-functions-github","url":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/imagery\/python-raster-functions-github","name":"Python Raster Functions & Out-of-the-Box Repository","isPartOf":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#website"},"datePublished":"2019-01-22T21:41:14+00:00","dateModified":"2022-04-19T00:46:34+00:00","description":"Python raster functions posted on Esri's GitHub repository can help you get started with custom on-the-fly raster processing in ArcGIS.","breadcrumb":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/imagery\/python-raster-functions-github#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/imagery\/python-raster-functions-github"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/imagery\/python-raster-functions-github#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.esri.com\/arcgis-blog\/"},{"@type":"ListItem","position":2,"name":"A Treasure Trove of Python Raster Functions"}]},{"@type":"WebSite","@id":"https:\/\/www.esri.com\/arcgis-blog\/#website","url":"https:\/\/www.esri.com\/arcgis-blog\/","name":"ArcGIS Blog","description":"Get insider info from Esri product teams","publisher":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.esri.com\/arcgis-blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.esri.com\/arcgis-blog\/#organization","name":"Esri","url":"https:\/\/www.esri.com\/arcgis-blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Esri.png","contentUrl":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Esri.png","width":400,"height":400,"caption":"Esri"},"image":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/esrigis\/","https:\/\/x.com\/ESRI","https:\/\/www.linkedin.com\/company\/5311\/"]},{"@type":"Person","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/dd72385e82420c28c64ee1e347f8e26b","name":"Julia Lenhardt","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/image\/","url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/10\/Me.jpg","contentUrl":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/10\/Me.jpg","caption":"Julia Lenhardt"},"description":"Julia is a product engineer on the Raster team. She has been with Esri since 2014 and has a background in remote sensing and GIS for environmental research. In addition to image analysis, she has a passion for music, running, good food and animal welfare.","url":"https:\/\/www.esri.com\/arcgis-blog\/author\/jlenhardt"}]}},"text_date":"January 22, 2019","author_name":"Julia Lenhardt","author_page":"https:\/\/www.esri.com\/arcgis-blog\/author\/jlenhardt","custom_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/01\/Maps.jpg","primary_product":"ArcGIS Pro","tag_data":[{"term_id":115262,"name":"Imagery","slug":"imagery","term_group":0,"term_taxonomy_id":115262,"taxonomy":"post_tag","description":"","parent":0,"count":152,"filter":"raw"},{"term_id":24341,"name":"python","slug":"python","term_group":0,"term_taxonomy_id":24341,"taxonomy":"post_tag","description":"","parent":0,"count":171,"filter":"raw"},{"term_id":29991,"name":"raster analysis","slug":"raster-analysis","term_group":0,"term_taxonomy_id":29991,"taxonomy":"post_tag","description":"","parent":0,"count":58,"filter":"raw"},{"term_id":35201,"name":"raster function templates","slug":"raster-function-templates","term_group":0,"term_taxonomy_id":35201,"taxonomy":"post_tag","description":"","parent":0,"count":4,"filter":"raw"},{"term_id":24661,"name":"raster functions","slug":"raster-functions","term_group":0,"term_taxonomy_id":24661,"taxonomy":"post_tag","description":"","parent":0,"count":22,"filter":"raw"}],"category_data":[{"term_id":22931,"name":"Imagery &amp; Remote Sensing","slug":"imagery","term_group":0,"term_taxonomy_id":22931,"taxonomy":"category","description":"","parent":0,"count":765,"filter":"raw"},{"term_id":22941,"name":"Mapping","slug":"mapping","term_group":0,"term_taxonomy_id":22941,"taxonomy":"category","description":"","parent":0,"count":2683,"filter":"raw"}],"product_data":[{"term_id":36571,"name":"ArcGIS Enterprise","slug":"arcgis-enterprise","term_group":0,"term_taxonomy_id":36571,"taxonomy":"product","description":"","parent":0,"count":972,"filter":"raw"},{"term_id":36561,"name":"ArcGIS Pro","slug":"arcgis-pro","term_group":0,"term_taxonomy_id":36561,"taxonomy":"product","description":"","parent":0,"count":2035,"filter":"raw"},{"term_id":36991,"name":"ArcMap","slug":"arcgis-desktop","term_group":0,"term_taxonomy_id":36991,"taxonomy":"product","description":"","parent":36981,"count":325,"filter":"raw"}],"primary_product_link":"https:\/\/www.esri.com\/arcgis-blog\/?s=#&products=arcgis-pro","_links":{"self":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/blog\/414072","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/blog"}],"about":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/types\/blog"}],"author":[{"embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/users\/8222"}],"replies":[{"embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/comments?post=414072"}],"version-history":[{"count":0,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/blog\/414072\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/media?parent=414072"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/categories?post=414072"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/tags?post=414072"},{"taxonomy":"industry","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/industry?post=414072"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/product?post=414072"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}