{"id":66601,"date":"2015-02-25T15:21:07","date_gmt":"2015-02-25T15:21:07","guid":{"rendered":"http:\/\/www.esri.com\/arcgis-blog\/products\/product\/uncategorized\/custom-image-processing-2-0\/"},"modified":"2018-03-26T21:04:33","modified_gmt":"2018-03-26T21:04:33","slug":"custom-image-processing-2-0","status":"publish","type":"blog","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/product\/defense\/custom-image-processing-2-0","title":{"rendered":"Custom Image Processing 2.0"},"author":6071,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"open","ping_status":"closed","template":"","format":"standard","meta":{"_acf_changed":false,"_searchwp_excluded":""},"categories":[24641,22851,22931,22941,22771],"tags":[24651,22901,22821,24341,23011,24661],"industry":[],"product":[],"class_list":["post-66601","blog","type-blog","status-publish","format-standard","hentry","category-defense","category-national-government","category-imagery","category-mapping","category-natural-resources","tag-image-analysis","tag-national-government","tag-oceans-and-maritime","tag-python","tag-raster","tag-raster-functions"],"acf":{"short_description":"You can now use Python to create your own raster functions in ArcGIS. Previously, this was done in the .NET framework. Python is more acc...","flexible_content":[{"acf_fc_layout":"content","content":"<p>You can now use Python to create your own raster functions in ArcGIS. Previously, this was done in the .NET framework. Python is more accessible for users and allows you to plug into any of the Python libraries, such as SciPy. We\u2019ve created a Github repository where you can learn about our API, download sample functions, contribute your own, and ask questions. The idea is to make this into a community for everyone who is creating custom raster functions for ArcGIS.<\/p>\n<p><a href=\"https:\/\/github.com\/Esri\/raster-functions\/\">https:\/\/github.com\/Esri\/raster-functions\/<\/a><\/p>\n<p>Custom functions can be useful for anyone, but they\u2019re especially powerful for the scientific community when working with HDF, Grib, or NetCDF files\u2014what we call multidimensional mosaic datasets. A simple example of what you can do is to derive wind chill from a dataset that contains both wind speed and air temperature. You can also pull individual time slices for visualization and analysis.<\/p>\n<p>There are some caveats, however. Python is not the same as ArcPy so this will not be compatible with geoprocessing models. If you want to know why, ask in the comments (it\u2019s tangential to this topic). Whereas functions are ideal for per-pixel processing, if you want to do something that requires a global analysis, you\u2019re better off with a geoprocessing model.<\/p>\n<p>It\u2019s technically true that anything you can do in Python, you can incorporate into a raster function; however, that doesn\u2019t mean it\u2019s a good idea. You want to stick with NumPy and SciPy for performance reasons because of their ability to handle rasters as an array.<\/p>\n<p>Check out the repository. It has more background information on what a raster function is, and goes into much more detail about how to get started and optimize your custom raster functions. We\u2019re leveling up here, so if you have any questions or need clarification on anything, you can ask questions on this blog or on the repository.<\/p>\n"}],"authors":[{"ID":6071,"user_firstname":"","user_lastname":"","nickname":"kevin_butler","user_nicename":"kevin_butler","display_name":"kevin_butler","user_email":"kevin_butler@esri.com","user_url":"","user_registered":"2018-03-02 00:17:54","user_description":"","user_avatar":"<img alt='' src='https:\/\/secure.gravatar.com\/avatar\/738391810f6c55998ac19e21c20476b5890e070b6c1caee1756760c508339474?s=96&#038;d=blank&#038;r=g' srcset='https:\/\/secure.gravatar.com\/avatar\/738391810f6c55998ac19e21c20476b5890e070b6c1caee1756760c508339474?s=192&#038;d=blank&#038;r=g 2x' class='avatar avatar-96 photo' height='96' width='96' loading='lazy' decoding='async'\/>"}]},"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>Custom Image Processing 2.0<\/title>\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\/product\/defense\/custom-image-processing-2-0\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Custom Image Processing 2.0\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.esri.com\/arcgis-blog\/products\/product\/defense\/custom-image-processing-2-0\" \/>\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=\"2018-03-26T21:04:33+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\/product\/defense\/custom-image-processing-2-0#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/product\/defense\/custom-image-processing-2-0\"},\"author\":{\"name\":\"kevin_butler\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/09354c22f25abe7c55fe3364ec95f27d\"},\"headline\":\"Custom Image Processing 2.0\",\"datePublished\":\"2015-02-25T15:21:07+00:00\",\"dateModified\":\"2018-03-26T21:04:33+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/product\/defense\/custom-image-processing-2-0\"},\"wordCount\":3,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#organization\"},\"keywords\":[\"image analysis\",\"National Government\",\"oceans and maritime\",\"python\",\"raster\",\"raster functions\"],\"articleSection\":[\"Defense and Intelligence\",\"Government\",\"Imagery &amp; Remote Sensing\",\"Mapping\",\"Natural Resources\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.esri.com\/arcgis-blog\/products\/product\/defense\/custom-image-processing-2-0#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/product\/defense\/custom-image-processing-2-0\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/product\/defense\/custom-image-processing-2-0\",\"name\":\"Custom Image Processing 2.0\",\"isPartOf\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#website\"},\"datePublished\":\"2015-02-25T15:21:07+00:00\",\"dateModified\":\"2018-03-26T21:04:33+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/product\/defense\/custom-image-processing-2-0#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.esri.com\/arcgis-blog\/products\/product\/defense\/custom-image-processing-2-0\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/product\/defense\/custom-image-processing-2-0#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.esri.com\/arcgis-blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Custom Image Processing 2.0\"}]},{\"@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\/09354c22f25abe7c55fe3364ec95f27d\",\"name\":\"kevin_butler\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/738391810f6c55998ac19e21c20476b5890e070b6c1caee1756760c508339474?s=96&d=blank&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/738391810f6c55998ac19e21c20476b5890e070b6c1caee1756760c508339474?s=96&d=blank&r=g\",\"caption\":\"kevin_butler\"},\"url\":\"\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Custom Image Processing 2.0","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\/product\/defense\/custom-image-processing-2-0","og_locale":"en_US","og_type":"article","og_title":"Custom Image Processing 2.0","og_url":"https:\/\/www.esri.com\/arcgis-blog\/products\/product\/defense\/custom-image-processing-2-0","og_site_name":"ArcGIS Blog","article_publisher":"https:\/\/www.facebook.com\/esrigis\/","article_modified_time":"2018-03-26T21:04:33+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\/product\/defense\/custom-image-processing-2-0#article","isPartOf":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/product\/defense\/custom-image-processing-2-0"},"author":{"name":"kevin_butler","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/09354c22f25abe7c55fe3364ec95f27d"},"headline":"Custom Image Processing 2.0","datePublished":"2015-02-25T15:21:07+00:00","dateModified":"2018-03-26T21:04:33+00:00","mainEntityOfPage":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/product\/defense\/custom-image-processing-2-0"},"wordCount":3,"commentCount":0,"publisher":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#organization"},"keywords":["image analysis","National Government","oceans and maritime","python","raster","raster functions"],"articleSection":["Defense and Intelligence","Government","Imagery &amp; Remote Sensing","Mapping","Natural Resources"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.esri.com\/arcgis-blog\/products\/product\/defense\/custom-image-processing-2-0#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/product\/defense\/custom-image-processing-2-0","url":"https:\/\/www.esri.com\/arcgis-blog\/products\/product\/defense\/custom-image-processing-2-0","name":"Custom Image Processing 2.0","isPartOf":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#website"},"datePublished":"2015-02-25T15:21:07+00:00","dateModified":"2018-03-26T21:04:33+00:00","breadcrumb":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/product\/defense\/custom-image-processing-2-0#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.esri.com\/arcgis-blog\/products\/product\/defense\/custom-image-processing-2-0"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/product\/defense\/custom-image-processing-2-0#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.esri.com\/arcgis-blog\/"},{"@type":"ListItem","position":2,"name":"Custom Image Processing 2.0"}]},{"@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\/09354c22f25abe7c55fe3364ec95f27d","name":"kevin_butler","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/738391810f6c55998ac19e21c20476b5890e070b6c1caee1756760c508339474?s=96&d=blank&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/738391810f6c55998ac19e21c20476b5890e070b6c1caee1756760c508339474?s=96&d=blank&r=g","caption":"kevin_butler"},"url":""}]}},"text_date":"February 25, 2015","author_name":"kevin_butler","author_page":false,"custom_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/08\/Newsroom-Keyart-Wide-1920-x-1080.jpg","primary_product":false,"tag_data":[{"term_id":24651,"name":"image analysis","slug":"image-analysis","term_group":0,"term_taxonomy_id":24651,"taxonomy":"post_tag","description":"","parent":0,"count":29,"filter":"raw"},{"term_id":22901,"name":"National Government","slug":"national-government","term_group":0,"term_taxonomy_id":22901,"taxonomy":"post_tag","description":"","parent":0,"count":255,"filter":"raw"},{"term_id":22821,"name":"oceans and maritime","slug":"oceans-and-maritime","term_group":0,"term_taxonomy_id":22821,"taxonomy":"post_tag","description":"","parent":0,"count":102,"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":23011,"name":"raster","slug":"raster","term_group":0,"term_taxonomy_id":23011,"taxonomy":"post_tag","description":"","parent":0,"count":147,"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":24641,"name":"Defense and Intelligence","slug":"defense","term_group":0,"term_taxonomy_id":24641,"taxonomy":"category","description":"","parent":0,"count":162,"filter":"raw"},{"term_id":22851,"name":"Government","slug":"national-government","term_group":0,"term_taxonomy_id":22851,"taxonomy":"category","description":"","parent":0,"count":413,"filter":"raw"},{"term_id":22931,"name":"Imagery &amp; Remote Sensing","slug":"imagery","term_group":0,"term_taxonomy_id":22931,"taxonomy":"category","description":"","parent":0,"count":770,"filter":"raw"},{"term_id":22941,"name":"Mapping","slug":"mapping","term_group":0,"term_taxonomy_id":22941,"taxonomy":"category","description":"","parent":0,"count":2693,"filter":"raw"},{"term_id":22771,"name":"Natural Resources","slug":"natural-resources","term_group":0,"term_taxonomy_id":22771,"taxonomy":"category","description":"","parent":0,"count":262,"filter":"raw"}],"product_data":[],"primary_product_link":"https:\/\/www.esri.com\/arcgis-blog\/","_links":{"self":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/blog\/66601","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\/6071"}],"replies":[{"embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/comments?post=66601"}],"version-history":[{"count":0,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/blog\/66601\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/media?parent=66601"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/categories?post=66601"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/tags?post=66601"},{"taxonomy":"industry","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/industry?post=66601"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/product?post=66601"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}