<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>PostGIS &#8211; Safe Software</title>
	<atom:link href="https://www.safe.com/blog/category/postgis/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.safe.com</link>
	<description>FME &#124; Integrate Data, Applications, Web Services</description>
	<lastBuildDate>Tue, 23 Mar 2021 22:46:28 +0000</lastBuildDate>
	<language>en-CA</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=5.4.2</generator>
	<item>
		<title>A Beginner&#8217;s Guide to&#8230; Bulk Database Updates with FME</title>
		<link>https://www.safe.com/blog/2018/10/beginners-database-updates-evangelist180/</link>
					<comments>https://www.safe.com/blog/2018/10/beginners-database-updates-evangelist180/#comments</comments>
		
		<dc:creator><![CDATA[Mark Ireland]]></dc:creator>
		<pubDate>Thu, 25 Oct 2018 10:03:09 +0000</pubDate>
				<guid isPermaLink="false">https://blog.safe.com/?p=101985</guid>

					<description><![CDATA[Posting a file of updates to a database is a common requirement. FME can be used to do this very easily, and this article shows how, with several practical examples. Unlike many of my blog posts - which often read like a courtroom novel - there is no theory or cross-examination; just the basic facts to get you started on database updates with FME.]]></description>
										<content:encoded><![CDATA[<p><img class="alignright wp-image-102007" src="https://cdn.safe.com/wp-content/uploads/2018/10/19135318/DatabaseUpdatesFeatured.png" alt="" width="357" height="512" />This article is a simple guide to bulk database updates with FME.</p>
<p>Sometimes my blog posts are like a courtroom novel. The recent <a href="https://blog.safe.com/2018/09/fme2018-tolerance-evangelist179/" target="_blank" rel="noopener noreferrer">article on precision</a> is an example of this. I reach a successful verdict, but getting there involves an opening statement, a journey through obscure aspects of theory, cross-examining our functionality, and making a final argument for various design decisions. Only after all that can I prove beyond doubt that our work is fit for purpose.</p>
<p>That sort of article is fun to write and it does illustrate Safe&#8217;s thought processes in designing FME functionality. But sometimes &#8211; like reading a courtroom novel &#8211; you want to skip to the final chapter. You just want the juicy part where our hero attorney has already got the result, and simply illuminates the solution in logical steps.</p>
<p>Well, today, I am that hero attorney. I am the <a href="https://en.wikipedia.org/wiki/Perry_Mason" target="_blank" rel="noopener noreferrer">Perry Mason</a> of the FME world, and this article is the final chapter of &#8220;Updating Databases with FME&#8221;. No theory or cross examination involved. Step by step I&#8217;ll cast light on how FME made it easy to push mass updates to a database.</p>
<p>There is just one design issue I&#8217;ll touch on, and it is important. In law there are multiple jurisdictions, and a technique Perry Mason tries in a California court may not work for <a href="https://en.wikipedia.org/wiki/Atticus_Finch" target="_blank" rel="noopener noreferrer">Atticus Finch</a> in Alabama. Similarly, in our world of data there are multiple databases. But! FME techniques you use for Oracle <em>will</em> work for SQL Server, and FME techniques you use for Postgres <em>will</em> work for an Esri Geodatabase.</p>
<p>How can this happen? It&#8217;s because we&#8217;ve worked really hard to harmonize (or standardize) the interfaces inside FME. So whatever database applies in your jurisdiction &#8211; or even if your work involves several database types &#8211; this post covers you.</p>
<p>So let&#8217;s get on with it&#8230;</p>
<p><img class="aligncenter size-full wp-image-5069" src="https://cdn.safe.com/wp-content/uploads/2013/09/EvangelistBanner7.png" alt="" width="640" height="26" /></p>
<h3>Setting up an FME Database Connection</h3>
<p>When you want to read to or write from a database &#8211; including database updates &#8211; you need authorization. FME defines authorization parameters using a connection tool. It&#8217;s accessed through Tools &gt; FME Options in FME Workbench. So start Workbench, select Tools &gt; FME Options and you will get this dialog:</p>
<p><img class="alignnone size-full wp-image-101996" src="https://cdn.safe.com/wp-content/uploads/2018/10/19075433/DatabaseUpdates2018-1.png" alt="" width="811" height="460" /></p>
<p>When I click on Database Connections, I get a list of available connections. If I want to create a new one I press the plus button and get this dialog:</p>
<p><img class="alignnone size-full wp-image-102000" src="https://cdn.safe.com/wp-content/uploads/2018/10/19075856/DatabaseUpdates2018-2.png" alt="" width="417" height="318" /></p>
<p>Just enter your database details in there, test and then save. Now you have a connection defined, you can use it wherever you like in FME. So first let&#8217;s use it to insert some data into a database&#8230;</p>
<p><img class="aligncenter size-full wp-image-5069" src="https://cdn.safe.com/wp-content/uploads/2013/09/EvangelistBanner7.png" alt="" width="640" height="26" /></p>
<h3>Inserting Data to a Database with FME</h3>
<p>To carry out database updates, first you need data in the database! Let&#8217;s say you want to read a dataset &#8211; maybe an Excel spreadsheet &#8211; and write it to a database, creating a table at the same time. That&#8217;s simply done in FME by generating a new workspace and choosing a database format. The generate option exists on the start page of FME Workbench, or you can use the shortcut Ctrl+G. That opens the basic dialog for defining a translation:</p>
<p><img class="alignnone size-full wp-image-102010" src="https://cdn.safe.com/wp-content/uploads/2018/10/19135808/DatabaseUpdates2018-3.png" alt="" width="408" height="403" /></p>
<p>Here I have filled in the fields to define a translation of data about parks in the city of Vancouver. The translation is from MapInfo TAB (a spatial data format) to PostGIS (a standard PostgreSQL database with a spatial extension). The spatial part is not necessary &#8211; the same setup works for data without a spatial component &#8211; but maps are cool so I&#8217;ll go with it.</p>
<p>The database connection I selected is the one I defined above, saving me the effort of re-entering my authentication details.</p>
<p>Click OK and that dialog creates a workspace that looks like this:</p>
<p><img class="alignnone size-full wp-image-102011" src="https://cdn.safe.com/wp-content/uploads/2018/10/19140133/DatabaseUpdates2018-4.png" alt="" width="820" height="237" /></p>
<p>Each object on the left is a table, layer or class in your source data. Each object on the right is a table in your database.</p>
<h4>Setting Database Parameters</h4>
<p>When using databases the key settings for each table are accessed by clicking the cogwheel icon on those objects, like this:</p>
<p><img class="alignnone wp-image-102012 size-full" src="https://cdn.safe.com/wp-content/uploads/2018/10/19140414/DatabaseUpdates2018-5.png" alt="Database Insert Parameters" width="790" height="408" /></p>
<p>The table name is the first parameter, and so I can rename the table to be something different; and I can choose which schema (Table Qualifier) to write to as well.</p>
<p>But the most important parameter (Feature Operation) tells us that we are INSERTing data, and I can also choose in what way the table is created:</p>
<p><img class="alignnone size-full wp-image-102013" src="https://cdn.safe.com/wp-content/uploads/2018/10/19140513/DatabaseUpdates2018-6.png" alt="" width="497" height="161" /></p>
<p>So I can choose to create the table regardless of if it exists (Drop and Create), create it if it doesn&#8217;t already exist (Create if Needed), just add to the existing table (Use Existing), or empty it if it already exists (Truncate Existing).</p>
<p>Which I use depends on the scenario I am working through, but in this case &#8211; to create and fill a table &#8211; I&#8217;ll use <em>Create if Needed</em>. The advantage over Drop and Create is that if another user already has a table with that name (and I haven&#8217;t checked) then at least I won&#8217;t delete their content first.</p>
<p>Anyway, I run the workspace and FME loads the data:</p>
<p><img class="alignnone size-full wp-image-102015" src="https://cdn.safe.com/wp-content/uploads/2018/10/19142521/DatabaseUpdates2018-7.png" alt="" width="834" height="358" /></p>
<p>Of course, at some point in the future I might find the source of the data (Parks.tab) has changed, and I need to update my data based on that changed dataset&#8230;</p>
<p><img class="aligncenter size-full wp-image-5069" src="https://cdn.safe.com/wp-content/uploads/2013/09/EvangelistBanner7.png" alt="" width="640" height="26" /></p>
<h3>Updating Records in a Database with FME</h3>
<p>Say I receive a dataset named ParksUpdates.tab. The simplest way to update my database is to do the same process as above, but to use Drop and Create as the table operation. That way I am just replacing everything:</p>
<p><img class="alignnone size-full wp-image-102016" src="https://cdn.safe.com/wp-content/uploads/2018/10/19142833/DatabaseUpdates2018-8.png" alt="" width="700" height="162" /></p>
<p>But that relies on ParksUpdates.tab being the FULL replacement dataset. What if it only includes the records that need an update? Well in that scenario I simply change the operation to UPDATE (instead of INSERT) and choose to Use Existing table:</p>
<p><img class="alignnone wp-image-102017 size-full" src="https://cdn.safe.com/wp-content/uploads/2018/10/19142947/DatabaseUpdates2018-9.png" alt="Database Updates Parameters" width="494" height="230" /></p>
<p>Notice that when I pick UPDATE, then another parameter becomes available to me: Match Columns. I need this to define which feature updates which record. In this case I have an attribute called parkid in my source data and a field (column) named parkid in my database table; so that&#8217;s the attribute I select:</p>
<p><img class="alignnone size-full wp-image-102018" src="https://cdn.safe.com/wp-content/uploads/2018/10/19143102/DatabaseUpdates2018-10.png" alt="" width="480" height="91" /></p>
<p>So if an incoming feature has the attribute parkid=13, then its contents are used to update the database record where parkid=13.</p>
<p>That&#8217;s simple enough, but to add a little complexity (not too much) there is also a WHERE clause I can use instead. This lets me define the match where the attribute and field names are not the same (for example ParkNumber and parkid) but also allows me to add extra conditions using field names:</p>
<p>&nbsp;</p>
<p><img class="alignnone size-full wp-image-102039" src="https://cdn.safe.com/wp-content/uploads/2018/10/25150144/DatabaseUpdates2018-xx-Replacement.png" alt="" width="580" height="94" /></p>
<p>Here, for example, I&#8217;m updating records where ParkNumber = parkid, but also only where the neighborhoodname field is &#8220;Downtown&#8221;. So records outside of the Downtown area aren&#8217;t updated, even if the park ID matches. I could do a similar test for a status field (active, inactive) among many other examples.</p>
<p>So we do updates here, and that&#8217;s simple enough; but sometimes we also want to delete records&#8230;</p>
<p><img class="aligncenter size-full wp-image-5069" src="https://cdn.safe.com/wp-content/uploads/2013/09/EvangelistBanner7.png" alt="" width="640" height="26" /></p>
<h3>Deleting Records from a Database with FME</h3>
<p>Let&#8217;s assume my UpdatedParks dataset is a list of records to delete from the database table, not add. To do that I simply change the operation from UPDATE to DELETE:</p>
<p><img class="alignnone wp-image-102020 size-full" src="https://cdn.safe.com/wp-content/uploads/2018/10/19143610/DatabaseUpdates2018-12.png" alt="Database Delete Parameters" width="560" height="195" /></p>
<p>I get the same Match Column parameter (or WHERE clause) to define which incoming features should delete which existing records, and this is again easy to define.</p>
<p>So deletes are no more complex than updates; the key question is what happens when I want to both delete and update records simultaneously?</p>
<p><img class="aligncenter size-full wp-image-5069" src="https://cdn.safe.com/wp-content/uploads/2013/09/EvangelistBanner7.png" alt="" width="640" height="26" /></p>
<h3>Updating AND Deleting Database Records with FME</h3>
<p>Let&#8217;s say some of the incoming records are updates, while others are deletions:</p>
<p><img class="alignnone size-full wp-image-102025" src="https://cdn.safe.com/wp-content/uploads/2018/10/22094830/DatabaseUpdates2018-13.png" alt="" width="787" height="255" /></p>
<p>Obviously I can&#8217;t set the operation parameter to both DELETE <em>and</em> UPDATE for the entire table. What I do instead is <em>tag each feature</em> with the operation it will carry out. I do this using an attribute called <em>fme_db_operation</em>:</p>
<p><img class="alignnone wp-image-102026 size-full" src="https://cdn.safe.com/wp-content/uploads/2018/10/22095347/DatabaseUpdates2018-14.png" alt="Database Updates AND Deletes" width="800" height="391" /></p>
<p>You can see here that I have added an attribute to each stream of data, using an AttributeCreator transformer. The attribute name is <em>fme_db_operation</em>. For one lot of data I set the value to UPDATE. The other set of data has a value of DELETE. This is how I tag each feature with its own operation.</p>
<p>I still have to set the operation type on the table itself. But this time, rather than choosing Insert, Update, or Delete, I choose the option labelled <em>fme_db_operation</em>:</p>
<p><img class="alignnone size-full wp-image-102027" src="https://cdn.safe.com/wp-content/uploads/2018/10/22095516/DatabaseUpdates2018-15.png" alt="" width="570" height="229" /></p>
<p>Now when I run the workspace, the features tagged UPDATE update database records, while the features tagged DELETE delete database records. The Match Column (or WHERE clause) provides a match between features and records.</p>
<p>The one assumption is that we already know which feature are deletes and which are updates. In the above example, the source data is already divided into two. If we aren&#8217;t sure of that then we might need to do what is called <em>Change Detection</em>&#8230;</p>
<p><img class="aligncenter size-full wp-image-5069" src="https://cdn.safe.com/wp-content/uploads/2013/09/EvangelistBanner7.png" alt="" width="640" height="26" /></p>
<h3>Change Detection and Database Updates with FME</h3>
<p>Change Detection is where we have a new dataset and want to compare it to existing records to find what has changed. Here is such a workspace:</p>
<p><img class="alignnone size-full wp-image-102028" src="https://cdn.safe.com/wp-content/uploads/2018/10/22095831/DatabaseUpdates2018-16.png" alt="" width="789" height="190" /></p>
<p>It looks quite simple, and in fact it is. I have added a reader (Readers &gt; Add Reader) to read the existing contents of my database table, and an UpdateDetector transformer to compare these records to the UpdatedParks dataset, to identify where changes have occurred. I can detect changes either on field values, or spatial contents, or both.</p>
<p>Then it&#8217;s just a case of writing the results back to the database table. I don&#8217;t even need to create the <em>fme_db_operation</em> attribute; the UpdateDetector has done that for me. I must just check that the table is set with the correct operation (<em>fme_db_operation</em>) and that Match Column is set.</p>
<p><img class="alignnone size-full wp-image-102027" src="https://cdn.safe.com/wp-content/uploads/2018/10/22095516/DatabaseUpdates2018-15.png" alt="" width="570" height="229" /></p>
<p>At this point you probably know more than enough to carry out database updates; but there is one more scenario I can perhaps mention. What if each feature has a different match column? In that case you can write your match in the form of a where clause, and store it as an attribute. Then use that attribute for the match in the table parameters:</p>
<p><img class="alignnone size-full wp-image-102029" src="https://cdn.safe.com/wp-content/uploads/2018/10/22102743/DatabaseUpdates2018-17.png" alt="" width="554" height="93" /></p>
<p>&#8230;just like that!</p>
<p><em><strong>NOTE:</strong> In FME2019 <a href="https://blog.safe.com/2019/01/change-detection-2019-fmeevangelist184/" target="_blank" rel="noopener noreferrer">the ChangeDetector has undergone various improvements</a> and should be your go-to transformer instead of the UpdateDetector.</em></p>
<p><img class="aligncenter size-full wp-image-5069" src="https://cdn.safe.com/wp-content/uploads/2013/09/EvangelistBanner7.png" alt="" width="640" height="26" /></p>
<h3>Wrap Up</h3>
<p>I hope that was a good explanation for database updates, short on theory and long on practical examples. Speaking of which, we have an <strong><a href="https://knowledge.safe.com/articles/34351/updating-databases.html" target="_blank" rel="noopener noreferrer">online tutorial on database updates</a></strong>, where you can carry out exercises, step by step, using similar examples to what I showed today. So if you want to try some of these techniques in a safe practice environment, click the above link to visit the tutorial.</p>
<p>As I mentioned, although I used Postgres here, most of our database formats use an identical interface because we&#8217;ve invested a lot of time standardizing them all. That work is still ongoing, so one of the tutorial articles includes a <strong><a href="https://knowledge.safe.com/articles/830/incremental-database-updates-using-the-fme-format.html?" target="_blank" rel="noopener noreferrer">list of standardized formats</a></strong>, and what to do if your format is not yet updated.</p>
<p>And now, if you&#8217;ll excuse me, I&#8217;m going to do like Perry Mason and wrap up my case by going out to celebrate with steak and cocktails!</p>
<p><img class="alignnone size-full wp-image-5085" src="https://cdn.safe.com/wp-content/uploads/2013/09/NewBlogSignature.png" alt="" width="305" height="118" /></p>
<p><em><strong>PS:</strong> Safe Software now has an <a href="https://www.instagram.com/safesoftware/" target="_blank" rel="noopener noreferrer">Instagram page</a>. I&#8217;m not sure what an </em>instagram<em> is, but here&#8217;s a picture of me presenting at a prior user conference <small>(oh, and riding an inflatable horse):</small></em></p>
<p><a href="https://www.instagram.com/safesoftware/" target="_blank" rel="noopener noreferrer"><img class="alignnone wp-image-102031 size-full" src="https://cdn.safe.com/wp-content/uploads/2018/10/22123515/DatabaseUpdatesInstagram.png" alt="https://www.instagram.com/safesoftware/" width="1024" height="512" /></a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.safe.com/blog/2018/10/beginners-database-updates-evangelist180/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
			</item>
		<item>
		<title>6 Google Maps Engine Alternatives</title>
		<link>https://www.safe.com/blog/2015/01/6-google-maps-engine-alternatives/</link>
					<comments>https://www.safe.com/blog/2015/01/6-google-maps-engine-alternatives/#comments</comments>
		
		<dc:creator><![CDATA[Tiana Warner]]></dc:creator>
		<pubDate>Tue, 20 Jan 2015 22:56:40 +0000</pubDate>
				<guid isPermaLink="false">http://blog.safe.com/?p=94963</guid>

					<description><![CDATA[Google has announced that they’re ending support for Google Maps Engine. If you’ve used Google Maps Engine to store your vector and raster data, you should be aware that your GME data will disappear on January 29, 2016. No better time than the present to migrate your geographic data to a replacement Maps Engine solution. But [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Google has announced that they’re <a href="https://groups.google.com/forum/#!topic/google-maps-engine-users/IfqS90d8f0A" target="_blank" rel="noopener noreferrer">ending support for Google Maps Engine</a>. If you’ve used Google Maps Engine to store your vector and raster data, you should be aware that <b>your GME data will disappear on January 29, 2016</b>.</p>
<p>No better time than the present to migrate your geographic data to a replacement Maps Engine solution. But where to go? What technology can give you everything GME did?</p>
<ul>
<li>A place to store your geographic data in a web-based environment.</li>
<li>Powerful visuals for inspecting and analyzing your data.</li>
<li>Easy collaboration on maps.</li>
<li>Real-time capabilities like dynamic rendering, alerts and notifications.</li>
</ul>
<p>Let’s look at a few of the alternatives we’re aware of, and how you can migrate your data there without losing anything important. Please add your own suggestions in the comments.</p>
<p>You might find that one solution suits your requirements better than the others. I’d suggest testing out as many alternatives as you can before making your own decision about which is best.</p>
<p>Check out my follow-up post, <a title="How to Migrate your Google Maps Engine Data" href="http://blog.safe.com/2015/01/migrate-google-maps-engine-data/" target="_blank" rel="noopener noreferrer">How to Migrate your Google Maps Engine Data</a>, to see how to get your data into whatever system you choose.</p>
<h2><b>1. ArcGIS Online</b></h2>
<p><img class="alignright" src="https://www.webuildits.com/images/partners/esri-logo.jpg" alt="" width="300" />If you want everything you had in Maps Engine, then <a href="http://www.esri.com/software/arcgis/arcgisonline" target="_blank" rel="noopener noreferrer">ArcGIS Online</a> is probably your solution of choice. It’s made for creating interactive web maps and apps, and comes complete with all the analytical power and authoritative data you’d expect from an Esri product. Like GME, AGOL renders maps dynamically, which means it offers better visualization for data that’s constantly being updated.</p>
<p>The ‘apps’ component is interesting: you can <a href="http://www.arcgis.com/home/gallery.html#c=esri&amp;t=apps&amp;o=modified&amp;f=readytouse" target="_blank" rel="noopener noreferrer">turn any of your feature services into apps</a>, adding a new level of power to your data. AGOL also has no quotas or rate limits, offering more to organizations with high data volumes. They also have <a href="https://opendata.arcgis.com/about" target="_blank" rel="noopener noreferrer">ArcGIS Open Data</a>, which, if you’ve been using <a href="https://maps.google.com/gallery/" target="_blank" rel="noopener noreferrer">Google Map Gallery</a> with Maps Engine, is an equivalent public dataset collection and distribution platform.</p>
<p>Getting your data out of Google Maps Engine and into <a href="https://www.safe.com/integrate/arcgis-online-feature-service/" target="_blank" rel="noopener noreferrer">ArcGIS Online is a one-step process using FME</a>. Note you don’t need to have ArcGIS Desktop in order to use ArcGIS Online.</p>
<h2><b>2. CartoDB</b></h2>
<p><a href="http://cartodb.com/" target="_blank" rel="noopener noreferrer"><img class="alignright" src="https://cartodb.s3.amazonaws.com/static/logos_full_cartodb_light.png" alt="" width="300" />CartoDB</a> is also a full solution that would work nicely as a GME replacement. In fact, they’ve just <a href="http://blog.cartodb.com/gme-to-cartodb/" target="_blank" rel="noopener noreferrer">published a blog</a> comparing the two and describing how easy it is to move your data from one to the other.</p>
<p>In CartoDB, the web-based environment and spatially aware database components are handled by PostGIS in the cloud, while the visualization, collaboration, and analysis aspects are presented simply and beautifully in a web interface.</p>
<p>I need to stress the ease-of-use here. Last week I needed CartoDB for a demo video, and was apprehensive about needing to learn how to use it first. I created an account, logged in, and—that was it. I already knew how to use it. The simplicity of importing data, creating a map, and choosing how to represent my data was immediately obvious. Kudos, CartoDB.</p>
<p>CartoDB also offers dynamic rendering and geo-temporal visualizations, giving you real-time maps and the ability to see data as it happens.</p>
<p>Again, you can extract your data from Google Maps Engine and load it into <a href="https://www.safe.com/integrate/carto/">CartoDB in one step using FME</a>.</p>
<h2><b>3. iSpatial</b></h2>
<p><a href="http://www.t-sciences.com/product/ispatial-2" target="_blank" rel="noopener noreferrer"><img class=" alignright" src="https://www.t-sciences.com/wp-content/uploads/2013/04/iSpatialLogo_Web-374x108.png" alt="" width="300" />iSpatial</a> is a complete map creation, visualization, storage, collaboration, and analysis solution. From their website: “iSpatial is a web-based collaborative framework that leverages Google Earth and Maps in a flexible, task-based approach to solving complex problems.”</p>
<p>In addition to location-based inspection and analysis, it’s set up for real-time reporting and alerts management.</p>
<p>This technology is based on Google Earth/Maps, so if it’s the visual Google experience you’re after, this could be your solution. It also leverages Postgres/PostGIS in the back end.</p>
<p>And, yep, FME can extract your data from Google Maps Engine and put it into <a href="https://www.safe.com/integrate/postgis/">PostGIS in one step too</a>.</p>
<h2><b>4. A combination of Google products</b></h2>
<p><img class="alignright" src="https://cloud.google.com/_static/images/gcp-logo.png" alt="" width="300" />Google, of course, suggests replacing GME with a combination of their own solutions. <a title="How to Convert to KML and Style it without losing your mind" href="http://blog.safe.com/2015/04/how-to-convert-style-kml/" target="_blank" rel="noopener noreferrer">Google Maps/Earth</a> is obviously great for visualizing and creating maps, but what about the rest of what Maps Engine offered?</p>
<p><a href="https://www.google.com/maps/d/u/0/" target="_blank" rel="noopener noreferrer">My Maps</a> is basically the map creation, visualization, and collaboration aspect of GME (up until a few months ago, it was actually called Google Maps Engine Lite). Storage, then, can be handled by migrating your data to <a href="https://cloud.google.com/sql/" target="_blank" rel="noopener noreferrer">Google Cloud SQL</a>—a MySQL database in the cloud. Great, so now we have the web-based environment and database storage aspects.</p>
<p>Next, to bridge the two. Once you get your data from Google Maps Engine into the cloud-hosted MySQL database, you’ll have to follow their guide to build a spatial app using the Google Maps API. They’ve also provided an example vector data app and self-serve raster app for reference. Building stylized maps then involves a bit of JavaScript programming. Not an impossible migration, but not as straightforward as some of the solutions above, either.</p>
<p>If this is your solution, then guess what? You can extract your data from Google Maps Engine and put it into <a href="https://www.safe.com/integrate/google-cloud-sql-spatial/">Google Cloud SQL in one step using FME</a>. Google even published a page describing how.</p>
<h2><b>5. Mapbox<img class="alignright size-medium wp-image-97056" src="https://cdn.safe.com/wp-content/uploads/2015/01/20225640/mapbox-logo-300x300.png" alt="mapbox logo" width="300" height="300" /></b></h2>
<p>Mapbox is a great way to publish your geographic data. It’s scalable, cheap, and open source. This, however, is more of a “partial” GME replacement, and will need to be combined with other technology if you want to have everything you knew and loved about Maps Engine. For instance, it lacks some of the powerful data management and analysis tools found in the solutions above.</p>
<p>Storage of your map tiles is handled by a SQLite database (which FME also migrates to). On the front end, Mapbox uses TileMill for creating interactive maps—a design environment that leverages the stunning cartographic abilities of <a href="http://mapnik.org/" target="_blank" rel="noopener noreferrer">Mapnik</a>. <a href="https://www.youtube.com/watch?v=gKrFuNFqDbQ" target="_blank" rel="noopener noreferrer">Creating web map tiles with FME</a> is a common scenario, and <a href="https://www.safe.com/integrate/mapbox-mbtiles/" target="_blank" rel="noopener noreferrer">MBTiles</a> is on our radar for an upcoming release (potentially FME 2016).</p>
<h2><b>6. Your own custom integration</b></h2>
<p><img class="alignright size-full wp-image-94964" src="https://cdn.safe.com/wp-content/uploads/2015/01/jigsaw-305576_1280.png" alt="jigsaw-305576_1280" width="300" height="222" />In addition to those above, FME supports writing to many other cloud spatial data storage systems. If you’re not afraid of writing a bit of JavaScript, you can pick your favourite storage system (e.g. <a href="http://aws.amazon.com/rds/" target="_blank" rel="noopener noreferrer">Amazon RDS</a> or <a href="http://aws.amazon.com/rds/aurora/" target="_blank" rel="noopener noreferrer">Aurora</a>), your favourite map creation library/framework, and bridge the two using JavaScript.</p>
<p>Regardless of which technology you choose, rest assured you can easily migrate your data without losing anything. Google provided <a href="https://support.google.com/mapsengine/answer/6147675" target="_blank" rel="noopener noreferrer">this page</a> to walk you through exporting your stuff, where <a href="https://www.safe.com/fme/fme-desktop/" target="_blank" rel="noopener noreferrer">FME</a> is one of the recommended migration strategies.</p>
<p>Extracting your data from Maps Engine with FME is as simple as dropping down a reader and entering your credentials. From there, you can move it to any of <a href="http://www.safe.com/fme/format-search/#!" target="_blank" rel="noopener noreferrer">335+</a> alternate systems, including those listed above. FME also offers hundreds of data transformation and quality control options if you need to manipulate the content or structure before loading it into another system.</p>
<p>As always, don’t hesitate to <a href="https://www.safe.com/support/report-a-problem/" target="_blank" rel="noopener noreferrer">contact our most excellent support team</a> if you need help getting your data wherever it needs to go.</p>
<p><b>If you’ve been using Google Maps Engine for your geographical data, please share: What alternative solution do you plan on using? Can you suggest any others?</b></p>
<p><em>See also: <a title="How to Migrate your Google Maps Engine Data" href="http://blog.safe.com/2015/01/migrate-google-maps-engine-data/" target="_blank" rel="noopener noreferrer">How to Migrate your Google Maps Engine Data</a></em></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.safe.com/blog/2015/01/6-google-maps-engine-alternatives/feed/</wfw:commentRss>
			<slash:comments>45</slash:comments>
		
		
			</item>
		<item>
		<title>Free and Open Source: The Inside Scoop on FME and FOSS</title>
		<link>https://www.safe.com/blog/2014/09/free-open-source-fme-foss4g/</link>
					<comments>https://www.safe.com/blog/2014/09/free-open-source-fme-foss4g/#comments</comments>
		
		<dc:creator><![CDATA[Tiana Warner]]></dc:creator>
		<pubDate>Tue, 09 Sep 2014 18:19:40 +0000</pubDate>
				<guid isPermaLink="false">http://blog.safe.com/?p=93749</guid>

					<description><![CDATA[As a software developer, coding something that’s already been designed, implemented, and optimized is a pretty gigantic waste of time. Open source libraries help developers avoid re-inventing wheels. At this year’s FME UC, PostGIS founder Paul Ramsey took the stage to talk about the awesomeness that is Open Source. He explained how it’s important that [&#8230;]]]></description>
										<content:encoded><![CDATA[<div id="attachment_93756" style="width: 347px" class="wp-caption alignright"><a href="https://www.safe.com/presentation/boundless-keynote/"><img aria-describedby="caption-attachment-93756" class="wp-image-93756" src="https://cdn.safe.com/wp-content/uploads/2014/09/Paul-Ramsey-at-FME-UC-2014.jpg" alt="“Open source tools play well with others.” Paul Ramsey, PostGIS founder, talks Open Source at the FME International User Conference 2014." width="337" height="346" /></a><p id="caption-attachment-93756" class="wp-caption-text">“Open source tools play well with others.” Paul Ramsey, PostGIS founder, talks Open Source at the FME International User Conference 2014.</p></div>
<p>As a software developer, coding something that’s already been designed, implemented, and optimized is a pretty gigantic waste of time.</p>
<p>Open source libraries help developers avoid re-inventing wheels. At this year’s <a href="http://www.safe.com/fmeuc/" target="_blank" rel="noopener noreferrer">FME UC</a>, PostGIS founder <a href="https://www.safe.com/presentation/boundless-keynote/" target="_blank" rel="noopener noreferrer">Paul Ramsey took the stage</a> to talk about the awesomeness that is Open Source. He explained how it’s important that developers use available knowledge—and FME devs understand this, adding value by building useful functionality on top of open source libraries.h</p>
<p>Safe Software <a href="http://www.safe.com/terms-and-conditions/foss/" target="_blank" rel="noopener noreferrer">proudly supports</a> the Free and Open Source Software (FOSS) community and regularly sponsors the North American <a href="http://blog.safe.com/2011/09/foss4g-the-geo-open-source-dev-summit/" target="_blank" rel="noopener noreferrer">FOSS4G conferences</a>. FME uses many FOSS libraries, and when the devs <a href="https://www.youtube.com/watch?v=S0PfS-KyB8I">here at Safe</a> aren’t playing soccer or LEGO or a game of oversized Jenga, they’re working hard to make these libraries more accessible.</p>
<p>Our use of these libraries is a friendly two-way street. A two-way Yellow Brick Road, if you will. <a href="https://www.safe.com/solutions/for-data-types/free-and-open-source-data/">FOSS adds value to FME’s advanced data transformation and automation capabilities</a>, while our contributions to these technologies have included funding, coding, testing, and bug fixes. Here are ten such libraries.</p>
<h2>10 FOSS Libraries that FME Uses and Contributes to</h2>
<div id="attachment_93755" style="width: 299px" class="wp-caption alignleft"><a href="http://blog.safe.com/2014/04/mapnik-automation/"><img aria-describedby="caption-attachment-93755" class="wp-image-93755" src="https://cdn.safe.com/wp-content/uploads/2014/09/Mapnik-and-FME-Island-forest.png" alt="This Mario-like map is made possible by the integration of Mapnik and FME." width="289" height="315" /></a><p id="caption-attachment-93755" class="wp-caption-text">This Mario-like map is made possible by the integration of Mapnik and FME.</p></div>
<h3>1. Mapnik</h3>
<p><a href="http://mapnik.org/" target="_blank" rel="noopener noreferrer">Mapnik</a> is a toolkit that renders raster and vector data into beautiful cartographic maps. <a href="http://blog.safe.com/2014/04/mapnik-automation/" target="_blank" rel="noopener noreferrer">FME’s Mapnik transformer</a> lets users leverage Mapnik’s capabilities with any of the 325+ data formats FME supports. With Mapnik and FME, you can also create Web Map Tiling Services, <a href="http://demos.fmeserver.com/mapnik-contour-generator/" target="_blank" rel="noopener noreferrer">make a map out of your face</a>, <a href="http://blog.safe.com/2014/09/ahoy-thar-mapnik-beauties/" target="_blank" rel="noopener noreferrer">map yer way to buried treasure arr matey!</a>, and other such highly critical tasks. FME’s intuitive graphical interface makes it easy for any user to benefit from this complex library.</p>
<h3>2. SpatiaLite</h3>
<p><a href="http://www.gaia-gis.it/gaia-sins/" target="_blank" rel="noopener noreferrer">SpatiaLite</a> extends SQLite into a simple Spatial DBMS. FME’s <a href="https://www.youtube.com/watch?v=WF6JvU0077k" target="_blank" rel="noopener noreferrer">SpatiaLite Reader / Writer</a> allows users to connect this format with hundreds of other formats, and leverage all of FME’s data transformation and automation capabilities. For example, you can instantly import SpatiaLite data into Google Maps Engine using our free <a href="https://www.safe.com/solutions/for-applications/google-earth-maps/" target="_blank" rel="noopener noreferrer">Data Loader for Google Maps Engine</a>.</p>
<div id="attachment_93750" style="width: 352px" class="wp-caption alignright"><a href="http://www.safe.com/solutions/for-databases/postgis/"><img aria-describedby="caption-attachment-93750" class=" wp-image-93750" src="https://cdn.safe.com/wp-content/uploads/2014/09/FME-reads-and-writes-PostgreSQL-and-PostGIS.png" alt="FME reads and writes a variety of open source databases." width="342" height="220" /></a><p id="caption-attachment-93750" class="wp-caption-text">FME reads and writes a variety of open source databases.</p></div>
<h3>3. PostGIS</h3>
<p><a href="http://postgis.net/" target="_blank" rel="noopener noreferrer">PostGIS</a> is a spatial database that adds support for geographic objects and location queries to PostgreSQL. FME’s <a href="http://www.safe.com/solutions/for-databases/postgis/" target="_blank" rel="noopener noreferrer">PostGIS Reader / Writer</a> lets users integrate hundreds of data sources with this format. Watch <a href="https://www.safe.com/presentation/boundless-keynote/" target="_blank" rel="noopener noreferrer">Paul Ramsey</a>’s FME UC talk to see the evolution of PostGIS, from the ideas that inspired it to its widespread use today.</p>
<h3>4. JTS and GEOS</h3>
<p><a href="http://tsusiatsoftware.net/jts/main.html" target="_blank" rel="noopener noreferrer">JTS</a> and <a href="http://trac.osgeo.org/geos/" target="_blank" rel="noopener noreferrer">GEOS</a> (Geometry Engine &#8211; Open Source) provide spatial predicates and functions for processing 2D geometry. JTS is the Java library and GEOS is the C++ library. Some of FME’s powerful geometry <a href="http://www.safe.com/fme/key-capabilities/data-transformation/" target="_blank" rel="noopener noreferrer">transformations</a> are based on GEOS/JTS algorithms.</p>
<div id="attachment_93752" style="width: 202px" class="wp-caption alignleft"><a href="https://2014.foss4g.org/foss4g-2014-booth-tour-preview-2/"><img aria-describedby="caption-attachment-93752" class=" wp-image-93752" src="https://cdn.safe.com/wp-content/uploads/2014/09/FOSS4G-2014-logo.png" alt="FME &#x2665; OSGeo. Safe Software is at FOSS4G this year." width="192" height="266" /></a><p id="caption-attachment-93752" class="wp-caption-text">FME <img src="https://s.w.org/images/core/emoji/12.0.0-1/72x72/2665.png" alt="♥" class="wp-smiley" style="height: 1em; max-height: 1em;" /> OSGeo. <a href="https://2014.foss4g.org/foss4g-2014-booth-tour-preview-2/" target="_blank" rel="noopener noreferrer">Safe Software is at FOSS4G this year</a>.</p></div>
<h3>5. OGR and GDAL (Geospatial Data Abstraction Library)</h3>
<p><a href="http://www.gdal.org/" target="_blank" rel="noopener noreferrer">These OSGeo libraries</a> support reading/writing over 50 raster formats (GDAL) and 20 vector formats (OGR). FME uses these libraries to add several readers and writers to its list of supported formats, which means these formats gain a wide range of enterprise transformation and automation capabilities.</p>
<p>Bonus: if you use a GDAL-based format in FME, you can feel comfortable knowing it was probably implemented by <a href="https://twitter.com/AaronAtSafe/status/507682593001963520" target="_blank" rel="noopener noreferrer">our in-house world Tetris champion</a>.</p>
<h3>6. FDO</h3>
<p><a href="http://fdo.osgeo.org/" target="_blank" rel="noopener noreferrer">FDO</a> works with a variety of geospatial data. This OSGeo API brings additional formats to FME, for example SQLite. Safe was one of the earliest adopters of this API (version 3.0) and is acknowledged as an official <a href="https://fdo.osgeo.org/content/products-using-fdo" target="_blank" rel="noopener noreferrer">Product Using FDO</a>.</p>
<h3>7. Ingres</h3>
<p><a href="http://www.actian.com/products/operational-databases/" target="_blank" rel="noopener noreferrer">Ingres</a> is an RDBMS that supports large commercial and government applications. Safe’s partnership with Actian resulted in an <a href="http://blog.safe.com/2012/10/code-warriors-actian-takes-their-development-on-the-road/" target="_blank" rel="noopener noreferrer">open-source FME reader/writer for Ingres tables</a>. This means increased data accessibility for Ingres users, making it easy to integrate spatial and enterprise data.</p>
<div id="attachment_93751" style="width: 284px" class="wp-caption alignright"><a href="https://www.safe.com/fme/tech-specs/"><img aria-describedby="caption-attachment-93751" class="size-full wp-image-93751" src="https://cdn.safe.com/wp-content/uploads/2014/09/FME-Workbench-running-on-Linux.png" alt="FME Workbench and the FME Data Inspector are available on Linux." width="274" height="192" /></a><p id="caption-attachment-93751" class="wp-caption-text">FME Workbench and the FME Data Inspector are available on Linux.</p></div>
<h3>8. Qt</h3>
<p><a href="http://qt-project.org/" target="_blank" rel="noopener noreferrer">Qt</a> is an application framework that we’ve used to help make FME <a href="https://www.safe.com/fme/tech-specs/" target="_blank" rel="noopener noreferrer">fully cross-platform</a>. Since FME 2013, FME has been available in beta on Mac and Linux platforms.</p>
<h3>9. Interlis</h3>
<p><a href="http://www.interlis.ch/" target="_blank" rel="noopener noreferrer">Interlis</a> is a geodata modeling and integration language adopted by the Swiss government as their national standard. Eisenhut Informatik is one of Safe’s longest standing open source partners, and their <a href="http://www.eisenhutinformatik.ch/interlis/ili2fme/" target="_blank" rel="noopener noreferrer">ili2fme</a> plug-in allows Interlis data to be translated to/from any of the formats supported by FME.</p>
<h3>10. LASzip</h3>
<p><a href="https://laszip.org/" target="_blank" rel="noopener noreferrer">LASzip</a> is a specialized library by Martin Isenburg that compresses LiDAR data without information loss—turning chubby LAS point clouds into lean, manageable LAZ files. The incorporation of this technology into FME has resulted a great improvement in the ability to archive and exchange <a href="http://blog.safe.com/2013/10/14-ways-to-take-charge-of-lidar-data/" target="_blank" rel="noopener noreferrer">point cloud data</a>.</p>
<h2>But Wait, There’s More</h2>
<p>For the full list of libraries licensed under the <a href="http://www.gnu.org/licenses/" target="_blank" rel="noopener noreferrer">LGPL</a>, visit our <a href="https://www.safe.com/terms-and-conditions/foss/" target="_blank" rel="noopener noreferrer">FOSS page</a>. You can also view more information about FME’s open source libraries by opening FME Desktop and selecting About &gt; Legal Notices.</p>
<h2>FME for Free</h2>
<p>If you want to use FME for non-commercial purposes, you qualify for a free <a href="https://www.safe.com/fme/fme-desktop/home-use-license/">FME Home Use License</a>.</p>
<p>We also offer a couple of free tools: <a href="http://www.safe.com/citygml-importer/" target="_blank" rel="noopener noreferrer">CityGML Importer for InfraWorks,</a> <a href="http://www.safe.com/solutions/for-applications/autodesk/revit/" target="_blank" rel="noopener noreferrer">FME Revit Exporter Plug-in,</a> and <a href="http://demos.fmeserver.com/easytranslator/index.html" target="_blank" rel="noopener noreferrer">Easy Translator</a> (a web service for immediately translating data into your required format and coordinate system).</p>
<p><img class="aligncenter size-full wp-image-5359" src="https://cdn.safe.com/wp-content/uploads/2013/09/banner_fmerocks.png" alt="banner_fmerocks" width="507" height="32" /></p>
<p><b>How have you integrated your software or project with Free and Open Source Software?</b> Are you attending <a href="https://2014.foss4g.org/" target="_blank" rel="noopener noreferrer">FOSS4G</a> this year, or have you in the past? Let us know in the comments!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.safe.com/blog/2014/09/free-open-source-fme-foss4g/feed/</wfw:commentRss>
			<slash:comments>3</slash:comments>
		
		
			</item>
		<item>
		<title>5 Ways to Do More with Mapnik</title>
		<link>https://www.safe.com/blog/2014/04/mapnik-automation/</link>
					<comments>https://www.safe.com/blog/2014/04/mapnik-automation/#respond</comments>
		
		<dc:creator><![CDATA[Tiana Warner]]></dc:creator>
		<pubDate>Fri, 25 Apr 2014 19:01:27 +0000</pubDate>
				<guid isPermaLink="false">http://blog.safe.com/?p=92526</guid>

					<description><![CDATA[Mapnik is a free, open source toolkit that takes vector and raster spatial data and renders it into a beautiful image. As of FME 2014, FME and Mapnik have been brought together to create the MapnikRasterizer. Adding a Mapnik transformer to FME is like adding a top hat to Abraham Lincoln: it brings a whole new [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><a href="http://mapnik.org/" target="_blank" rel="noopener noreferrer">Mapnik</a> is a free, open source toolkit that takes vector and raster spatial data and renders it into a beautiful image. As of FME 2014, FME and Mapnik have been brought together to create the <a href="https://knowledge.safe.com/articles/1092/introduction-to-mapnikrasterizer.html" target="_blank" rel="noopener noreferrer">MapnikRasterizer</a>.</p>
<div id="attachment_92527" style="width: 310px" class="wp-caption alignright"><a href="https://cdn.safe.com/wp-content/uploads/2014/04/Africa.jpg"><img aria-describedby="caption-attachment-92527" class="wp-image-92527 size-medium" src="https://cdn.safe.com/wp-content/uploads/2014/04/Africa-300x199.jpg" alt="This aesthetically pleasing raster image was created by combining a variety of data sources using FME and Mapnik." width="300" height="199" /></a><p id="caption-attachment-92527" class="wp-caption-text">This aesthetically pleasing raster image was created by combining a variety of data sources using FME and Mapnik.</p></div>
<p>Adding a Mapnik transformer to FME is like adding a top hat to Abraham Lincoln: it brings a whole new level of style and class. While FME can already <a href="https://knowledge.safe.com/articles/1099/converting-vector-data-to-raster.html" target="_blank" rel="noopener noreferrer">take plain vector data and render it as a raster</a>, Mapnik brings a new level of elegance and quality offered by subpixel anti-aliasing. It also offers a cleaner replacement to many <a href="https://www.safe.com/transformers/?category=Rasters" target="_blank" rel="noopener noreferrer">FME transformers that do regular image processing</a>. Rasters that once needed dozens of transformers to render now need only a handful. Mapnik is certainly a top hat on FME&#8217;s rasterizing capabilities<span style="color: #545454;">—</span>so <b>what does FME bring to Mapnik? </b>We offer 5 improvements below. Be sure to join our <a href="https://www.safe.com/webinars/secret-to-mapnik-mastery/" target="_blank" rel="noopener noreferrer">webinar</a> on May 7, 2014 at 8am PDT to see Mapnik examples that will change the way you think about cartography!</p>
<h2>1. Read and write more data formats than Mapnik currently supports</h2>
<div id="attachment_92531" style="width: 310px" class="wp-caption alignright"><a href="https://cdn.safe.com/wp-content/uploads/2014/04/VancouverRapidTransit.jpg"><img aria-describedby="caption-attachment-92531" class="wp-image-92531 size-medium" src="https://cdn.safe.com/wp-content/uploads/2014/04/VancouverRapidTransit-300x219.jpg" alt=" Create more meaningful Mapnik cartography with the ability to integrate hundreds of data formats." width="300" height="219" /></a><p id="caption-attachment-92531" class="wp-caption-text">Create more meaningful Mapnik cartography with the ability to integrate hundreds of data formats.</p></div>
<p>When you work with spatial data, being limited to a handful of formats is like having a cartographer sit on you and stuff your arms in a straitjacket. (Constricting, yes, but also painful and awkward.) At the time of writing, Mapnik can read Esri Shapefiles, PostGIS, TIFF raster, OSM XML, Kismet, and OGR/GDAL formats. <b>FME broadens that format reach</b> to include <a href="https://www.safe.com/integrate/" target="_blank" rel="noopener noreferrer">325+ vector, raster, 3D, tabular, database, web, XML, cloud (and more) formats</a>.  This means it’s easier than ever to work with Mapnik from a variety of systems and applications. FME’s <a href="https://www.safe.com/how-it-works/" target="_blank" rel="noopener noreferrer">data integration capabilities</a> offer precise control over the source and destination data, including over coordinate systems and reprojection.</p>
<h2>2. Automate Mapnik workflows</h2>
<div id="attachment_92529" style="width: 310px" class="wp-caption alignright"><a href="https://cdn.safe.com/wp-content/uploads/2014/04/FME-Mapnik-workspace.png"><img aria-describedby="caption-attachment-92529" class="size-medium wp-image-92529" src="https://cdn.safe.com/wp-content/uploads/2014/04/FME-Mapnik-workspace-300x167.png" alt="This graphical workflow was created using FME Desktop and reads from 5 disparate sources. The workflow can easily be scaled and automated." width="300" height="167" /></a><p id="caption-attachment-92529" class="wp-caption-text">This graphical workflow was created using FME Desktop and reads from 5 disparate sources. The workflow can easily be scaled and automated.</p></div>
<p>When you design a workflow involving Mapnik, you can use any of <a href="https://www.safe.com/transformers/matrix/" target="_blank" rel="noopener noreferrer">FME’s 400+ transformers</a> to validate the data, optimize data before processing it, or restructure it to meet requirements. From there it’s easy to <b>turn all your Mapnik rendering tasks into standard, repeatable actions</b>. You can perform the same data transformations on many datasets, or on a single dataset that constantly changes. This is really good news, because the data workflow you spent so long creating shouldn’t have to disappear forever. This isn’t an ice sculpture contest. (By the way, Mapnik currently runs on Windows, Mac, and Linux, and <a href="https://www.safe.com/fme/tech-specs/" target="_blank" rel="noopener noreferrer">so does FME</a>.)</p>
<h2>3. Wile those tiles, OSM style! (i.e., set up a Mapnik WMTS/WMS with FME Server)</h2>
<div id="attachment_92530" style="width: 284px" class="wp-caption alignright"><a href="https://cdn.safe.com/wp-content/uploads/2014/04/vancouver.png"><img aria-describedby="caption-attachment-92530" class="wp-image-92530 " src="https://cdn.safe.com/wp-content/uploads/2014/04/vancouver-300x219.png" alt="FME makes it simple to set up a Mapnik web map tile service." width="274" height="200" /></a><p id="caption-attachment-92530" class="wp-caption-text">FME makes it simple to set up a Mapnik web map tile service.</p></div>
<p>With FME you can take advantage of scalable automation by creating a Mapnik workflow and uploading it to <a href="https://www.safe.com/fme/fme-server/" target="_blank" rel="noopener noreferrer">FME Server</a> or <a href="https://www.safe.com/fme/fme-cloud/" target="_blank" rel="noopener noreferrer">FME Cloud</a>. Whether your server needs are big or small, it&#8217;s easy as that to make your data available and real-time. You can <b>create a web service that serves map tiles</b> in a standard way; for instance, you could serve <a href="http://wiki.osmfoundation.org/wiki/Main_Page" target="_blank" rel="noopener noreferrer">OpenStreetMap (OSM)</a> data as a backdrop, stylized in a way that meets your needs.</p>
<h2>4. Easy Mapnik styling &#8211; goodbye Python, hello GUI</h2>
<div id="attachment_92528" style="width: 310px" class="wp-caption alignright"><a href="https://cdn.safe.com/wp-content/uploads/2014/04/FME-Mapnik-parameters.png"><img aria-describedby="caption-attachment-92528" class="size-medium wp-image-92528" src="https://cdn.safe.com/wp-content/uploads/2014/04/FME-Mapnik-parameters-300x286.png" alt="FME's friendly interface makes it simple to style Mapnik output without code." width="300" height="286" /></a><p id="caption-attachment-92528" class="wp-caption-text">FME&#8217;s friendly interface makes it simple to style Mapnik output without code.</p></div>
<p>Mapnik offers precise control of symbology and styling, including fill color, dash pattern, fonts, etc. FME makes it intuitive to control it all. Back in 2011, FME users could <a href="http://blog.safe.com/2011/12/fmeevangelist92/" target="_blank" rel="noopener noreferrer">leverage Mapnik with Python</a>. Today, the MapnikRasterizer makes this much simpler with a friendly GUI. Thank God, because I didn’t want to touch that Python script with a 39½ foot pole. The MapnikRasterizer transformer doesn’t require any CSS or XML skills: it simply accepts parameters in a <b>point-and-click interface</b> like <a href="https://www.safe.com/transformers/matrix/" target="_blank" rel="noopener noreferrer">the rest of the FME transformers</a>.</p>
<h2>5. Win stuff for sharing your Mapnik art</h2>
<div id="attachment_92532" style="width: 310px" class="wp-caption alignright"><a href="https://cdn.safe.com/wp-content/uploads/2014/04/VancouverTwig.png"><img aria-describedby="caption-attachment-92532" class="wp-image-92532 size-medium" src="https://cdn.safe.com/wp-content/uploads/2014/04/VancouverTwig-300x219.png" alt="Keeping true to the world of Open Data, we think Mapnik projects are worth sharing. Enter our contest at safe.com/MapnikContest" width="300" height="219" /></a><p id="caption-attachment-92532" class="wp-caption-text">Keeping true to the world of Open Data, we think Mapnik projects are worth sharing. Check out our <a href="http://www.safe.com/contest/mapnik/" target="_blank" rel="noopener noreferrer">contest</a>.</p></div>
<p>Ok, Picasso. We’re giving out prizes for your Mapnik art! What can you create using FME and Mapnik? Whatever it is, I hope it’s less creepy than <a href="https://cdn.safe.com/wp-content/uploads/2014/04/Mapnik-WTF.jpg" target="_blank" rel="noopener noreferrer">this</a>. Together, Mapnik and FME help create beautiful and meaningful cartography worth sharing. If you think you’re the ultimate Mapnik Master, enter our <a href="http://www.safe.com/contest/mapnik/" target="_blank" rel="noopener noreferrer">Mapnik contest</a>. (Deadline: June 30, 2014)     <img class="aligncenter size-full wp-image-5359" src="https://cdn.safe.com/wp-content/uploads/2013/09/banner_fmerocks.png" alt="banner_fmerocks" width="507" height="32" /> I said adding Mapnik to FME is like adding a top hat to Abraham Lincoln – but maybe <b>adding FME to Mapnik</b> is a shift into <a href="http://en.wikipedia.org/wiki/Abraham_Lincoln:_Vampire_Hunter" target="_blank" rel="noopener noreferrer">Abraham Lincoln: Vampire Hunter</a>. FME brings hardcore data transformation and automation capabilities to your Mapnik projects. With <a href="http://www.safe.com/fme/fme-technology/fme-desktop/overview/" target="_blank" rel="noopener noreferrer">FME Desktop</a>, <a href="http://www.safe.com/fme/fme-technology/fme-server/" target="_blank" rel="noopener noreferrer">FME Server</a>, and <a href="http://www.fmecloud.com" target="_blank" rel="noopener noreferrer">FME Cloud</a> at your fingertips, the potential to create amazing cartography is endless. Thanks to the Mapnik team for making such great cartography possible in FME. <b>What will you do with Mapnik? </b>Be sure to share your creations with us in our <a href="http://safe.com/contest/mapnik/" target="_blank" rel="noopener noreferrer">contest</a>, and tune in to next week’s <a href="https://www.safe.com/webinars/secret-to-mapnik-mastery/" target="_blank" rel="noopener noreferrer">webinar</a> to learn more. For technical resources on the MapnikRasterizer, check out the <a href="https://docs.safe.com/fme/html/FME_Desktop_Documentation/FME_Transformers/Transformers/mapnikrasterizer.htm" target="_blank" rel="noopener noreferrer">MapnikRasterizer FME transformer documentation</a>, and these <a href="http://fmepedia.safe.com/articles/Samples_and_Demos/Introduction-to-MapnikRasterizer" target="_blank" rel="noopener noreferrer">Mapnik tutorials on FMEpedia</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.safe.com/blog/2014/04/mapnik-automation/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>FME 2014 Special: Top 10 Reader and Writer Updates</title>
		<link>https://www.safe.com/blog/2014/02/fmeevangelist123/</link>
					<comments>https://www.safe.com/blog/2014/02/fmeevangelist123/#respond</comments>
		
		<dc:creator><![CDATA[Mark Ireland]]></dc:creator>
		<pubDate>Wed, 05 Feb 2014 18:53:51 +0000</pubDate>
				<guid isPermaLink="false">http://blog.safe.com/?p=91922</guid>

					<description><![CDATA[By now you'll have (I hope) upgraded to 2014 and taken advantage of some of the new features and functionality. From my point of view updates can classified in one of three areas and, having already covered Workbench improvements and Transformer updates, it's time for me to look at the third of these: <strong>Readers and Writers.</strong>]]></description>
										<content:encoded><![CDATA[<style><!--
p {font-size:14px; line-height:150%}
--></style>
<p>Hello FME&#8217;ers,<a href="http://cdn.safe.com/wp-content/uploads/2014/02/Formats2014FeaturedImage.png"><img class="alignright size-full wp-image-91954" alt="Formats2014FeaturedImage" src="https://cdn.safe.com/wp-content/uploads/2014/02/Formats2014FeaturedImage.png" width="260" height="260" /></a><br />
By now you&#8217;ll have (I hope) upgraded to 2014 and taken advantage of some of the new features and functionality. From my point of view updates can classified in one of three areas and, having already covered <a title="FME 2014 Sneak Peek: Top 10 Workbench Optimizations" href="http://blog.safe.com/2013/12/fmeevangelist120/">Workbench improvements</a> and <a title="FME 2014 Special: Top 10 Transformer Updates" href="http://blog.safe.com/2014/01/fmeevangelist122/">Transformer updates</a>, it&#8217;s time for me to look at the third of these: <strong>Readers and Writers</strong>.</p>
<p>As usual we&#8217;ve added a whole bunch of new formats &#8211; twenty-one (21) by my count &#8211; and these seem to reflect some modern trends in spatial data. There are many cloud formats and some important updates to 3D and BIM data formats too. But there are also some updates to older CAD and GIS formats, filling in the gaps I suppose you could say.</p>
<p>Anyway, I realize that not everyone is going to be interested in every format, so for this top-ten I&#8217;ve tried to pick out updates that I think will be of most interest to the most people, and made the points fairly brief so it&#8217;s easier to skip items that don&#8217;t interest you. I haven&#8217;t mentioned null support because we included it in so many formats &#8211; check out <a title="FME 2014 Sneak Peek: More Ado About Nothing" href="http://blog.safe.com/2013/11/fmeevangelist119/" target="_blank" rel="noopener noreferrer">the list here</a> if you want to know which.</p>
<p style="text-align: center;"><a href="http://cdn.safe.com/wp-content/uploads/2013/09/EvangelistBanner7.png"><img class="aligncenter" alt="EvangelistBanner7" src="https://cdn.safe.com/wp-content/uploads/2013/09/EvangelistBanner7.png" width="640" height="26" /></a></p>
<h3><img class=" wp-image-91445 alignleft" style="margin-left: 8px; margin-right: 8px;" alt="EvangelistNumber10" src="https://cdn.safe.com/wp-content/uploads/2013/12/EvangelistNumber10.png" width="60" height="62" /></h3>
<h3>AIXM 5</h3>
<p>I wouldn&#8217;t blame you if you&#8217;ve never used &#8211; or even heard of &#8211; the <strong>Aeronautical Information Exchange Model</strong>. But if you ever journey by air then you&#8217;ll be grateful for this format because it&#8217;s the means by which navigational and other airspace information is passed between systems. For an interesting read on the subject check out <a href="http://en.wikipedia.org/wiki/AIXM" target="_blank" rel="noopener noreferrer">Wikipedia</a> first, then a site like the <a href="http://www.nats-uk.ead-it.com/public/index.php%3Foption=com_content&amp;task=blogcategory&amp;id=178&amp;Itemid=7.html" target="_blank" rel="noopener noreferrer">UK National Aeronautical Information Service</a>.</p>
<p>For FME, the big update is that we now have a Writer for Version 5 (actually v5.1) of this format. Version 5 is an important update so it was vital FME supports it. Technically, it being an XML-based format, you could have written data with the XMLTemplater transformer, but a dedicated writer like this is way better.</p>
<p style="text-align: center;"><a href="http://cdn.safe.com/wp-content/uploads/2013/09/EvangelistBanner7.png"><img class="aligncenter" alt="EvangelistBanner7" src="https://cdn.safe.com/wp-content/uploads/2013/09/EvangelistBanner7.png" width="640" height="26" /></a></p>
<h3><img class=" wp-image-91445 alignleft" style="margin-left: 8px; margin-right: 8px;" alt="EvangelistNumber9" src="https://cdn.safe.com/wp-content/uploads/2013/12/EvangelistNumber9.png" width="60" height="62" /></h3>
<h3>JPEG</h3>
<p>Did you know that FME doesn&#8217;t just read <strong>JPEG</strong> files, but also the <strong>Exif</strong> information that comes attached?</p>
<p>Exif (Exchangeable image file format) is metadata for a JPEG file, and includes location data from geotagged files. FME has been able to read these tags for a while; there&#8217;s to be a <a href="http://fmestore.safe.com/transformers/JpegGPSPointReplacer.htm" target="_blank" rel="noopener noreferrer">JpegGPSPointReplacer</a> transformer in the FME Store and Certified Professional Ulf Mansson blogged about how <a href="http://bbox.me/blog/?p=314" target="_blank" rel="noopener noreferrer">FME could read these Exif tags.</a></p>
<p>So Ulf will probably be happy to know that in FME 2014 we&#8217;ve expanded the JPEG Reader to add support for some additional tags:</p>
<p><strong>•</strong> jpeg_exif_contrast<br />
<strong>•</strong> jpeg_exif_exposureprogram<br />
<strong>•</strong> jpeg_exif_focallengthin35mmfilm<br />
<strong>•</strong> jpeg_exif_lightsource<br />
<strong>•</strong> jpeg_exif_saturation<br />
<strong>•</strong> jpeg_exif_sharpness<br />
<strong>•</strong> jpeg_exif_software</p>
<p>You can get at all these attributes in the Format Attributes tab in a feature type properties dialog.</p>
<p style="text-align: center;"><a href="http://cdn.safe.com/wp-content/uploads/2013/09/EvangelistBanner7.png"><img class="aligncenter" alt="EvangelistBanner7" src="https://cdn.safe.com/wp-content/uploads/2013/09/EvangelistBanner7.png" width="640" height="26" /></a></p>
<h3><img class=" wp-image-91445 alignleft" style="margin-left: 8px; margin-right: 8px;" alt="EvangelistNumber8" src="https://cdn.safe.com/wp-content/uploads/2013/12/EvangelistNumber8.png" width="60" height="62" /></h3>
<h3>Trimble SketchUp Reader and Writer<a href="http://cdn.safe.com/wp-content/uploads/2014/02/Formats2014SketchUp.png" target="_blank" rel="noopener noreferrer"><img class="size-medium wp-image-91924 alignright" style="border: 1px solid black; margin-left: 8px; margin-right: 8px;" alt="Formats2014SketchUp" src="https://cdn.safe.com/wp-content/uploads/2014/02/Formats2014SketchUp-242x300.png" width="242" height="300" /></a></h3>
<p>In case you didn&#8217;t know, <strong>SketchUp</strong> was acquired by Trimble in 2012, and shortly after an excellent new API was released. FME has had support for the Google version of SketchUp for a while, but 2014 introduces a whole new Reader and Writer that is based around the new Trimble API.</p>
<p>The new Reader/Writer provides support for versions back to Google v3 and up to the latest Trimble 2013 release. Besides this there are some useful improvements over the older R/W:</p>
<p><strong>•</strong> Coordinate System and Geo-location support. Data will be read in its true location, so with the FME Data Inspector you can see a background map (in 2D).<br />
<strong>•</strong> Support for Non-Affine Textures (those with a perspective correction)<br />
<strong>•</strong> Textures on a group feature</p>
<p style="text-align: center;"><a href="http://cdn.safe.com/wp-content/uploads/2013/09/EvangelistBanner7.png"><img class="aligncenter" alt="EvangelistBanner7" src="https://cdn.safe.com/wp-content/uploads/2013/09/EvangelistBanner7.png" width="640" height="26" /></a></p>
<h3><img class=" wp-image-91445 alignleft" style="margin-left: 8px; margin-right: 8px;" alt="EvangelistNumber7" src="https://cdn.safe.com/wp-content/uploads/2013/12/EvangelistNumber7.png" width="60" height="62" /></h3>
<h3>Esri Geodatabase</h3>
<p>The <strong>Geodatabase</strong> update I wanted to highlight is support for <strong>GUID column types</strong>. GUID stands for Globally Unique Identifiers, which are 36 character fields that uniquely identify features or objects in a Geodatabase. FME used to read them as string attributes but now we handle them as proper GUID fields and have an actual field type that can be selected in the Feature Type properties dialog:</p>
<p><a href="http://cdn.safe.com/wp-content/uploads/2014/02/Formats2014GeodbGUID.png"><img class="alignnone size-full wp-image-91927" alt="Formats2014GeodbGUID" src="https://cdn.safe.com/wp-content/uploads/2014/02/Formats2014GeodbGUID.png" width="574" height="173" /></a></p>
<p>Besides this update we&#8217;ve also worked on improving the handling of Chinese attribute names, updated the API (non-ArcObjects) to use v1.3 of the API, and added Raster Catalog support.</p>
<p style="text-align: center;"><a href="http://cdn.safe.com/wp-content/uploads/2013/09/EvangelistBanner7.png"><img class="aligncenter" alt="EvangelistBanner7" src="https://cdn.safe.com/wp-content/uploads/2013/09/EvangelistBanner7.png" width="640" height="26" /></a></p>
<h3><img class=" wp-image-91445 alignleft" style="margin-left: 8px; margin-right: 8px;" alt="EvangelistNumber6" src="https://cdn.safe.com/wp-content/uploads/2013/12/EvangelistNumber6.png" width="60" height="62" /></h3>
<h3>Google Earth KML</h3>
<p>A new update to the <strong>KML</strong> writer in FME 2014 was in response to a number of customer requests. The issue was this: when you view a KML dataset, the attribute information shows up inside a balloon. That balloon content can be displayed using HTML content, but there was no way in FME to include auxiliary files such as images or scripts.</p>
<p>So, the update in FME 2014 was to provide a way to do this. The magic is carried out in a section of the <strong>KMLPropertySetter</strong> transformer&#8217;s parameters:</p>
<p><a href="http://cdn.safe.com/wp-content/uploads/2014/02/Formats2014KMLAddtnFiles.png"><img class="alignnone size-full wp-image-91928" alt="Formats2014KMLAddtnFiles" src="https://cdn.safe.com/wp-content/uploads/2014/02/Formats2014KMLAddtnFiles.png" width="485" height="188" /></a></p>
<p>Now when I run this workspace, and write to KMZ, all of those files will be included with the HTML content.</p>
<p style="text-align: center;"><a href="http://cdn.safe.com/wp-content/uploads/2013/09/EvangelistBanner7.png"><img class="aligncenter" alt="EvangelistBanner7" src="https://cdn.safe.com/wp-content/uploads/2013/09/EvangelistBanner7.png" width="640" height="26" /></a></p>
<h3><img class=" wp-image-91445 alignleft" style="margin-left: 8px; margin-right: 8px;" alt="EvangelistNumber5" src="https://cdn.safe.com/wp-content/uploads/2013/12/EvangelistNumber5.png" width="60" height="62" /></h3>
<h3>MicroStation Design</h3>
<p>Two nice updates here, filling in a couple of gaps. Firstly we added the ability to write to multiple models. A <strong>MicroStation seed file </strong>can contain multiple models &#8211; basically the ability to apply different working units, global origins, etc. FME has long been able to read which model the data was coming from, now we can write it to a specific model to. You simply need to set either <em>igds_model_id</em> or <em>igds_model_name</em> on the features to be written. The model must already exist in the seed file too, as we can&#8217;t create it from scratch.</p>
<p>The second update is the ability to set <strong>draw order, aka &#8220;element priority&#8221;</strong>. MicroStation doesn&#8217;t have a method for setting the order in which layers are drawn one above the other. Instead each element (feature) is give its own priority. FME now has the ability to read and write this priority using the format attribute <em>igds_element_priority</em>. This will work for 2D datasets, or 3D datasets where the features have common Z values.</p>
<p>So, good news if you are a MicroStation user needing this functionality.</p>
<p style="text-align: center;"><a href="http://cdn.safe.com/wp-content/uploads/2013/09/EvangelistBanner7.png"><img class="aligncenter" alt="EvangelistBanner7" src="https://cdn.safe.com/wp-content/uploads/2013/09/EvangelistBanner7.png" width="640" height="26" /></a></p>
<h3><img class=" wp-image-91445 alignleft" style="margin-left: 8px; margin-right: 8px;" alt="EvangelistNumber4" src="https://cdn.safe.com/wp-content/uploads/2013/12/EvangelistNumber4.png" width="60" height="62" /></h3>
<h3>AutoCAD<a href="http://cdn.safe.com/wp-content/uploads/2014/02/Formats2014ACADRaster.png" target="_blank" rel="noopener noreferrer"><img class="alignright size-medium wp-image-91931" style="margin-left: 8px; margin-right: 8px;" alt="Formats2014ACADRaster" src="https://cdn.safe.com/wp-content/uploads/2014/02/Formats2014ACADRaster-300x250.png" width="300" height="250" /></a></h3>
<p>For <strong>AutoCAD</strong>, FME 2014 introduces the ability to <strong>read and write raster features</strong> with our AutoCAD formats. I didn&#8217;t realize that raster data could be added to an AutoCAD drawing, but apparently it can &#8211; the DWG file simply includes a reference to the raster file.</p>
<p>When FME reads the raster data it includes a set of attributes that define any clip boundaries that were set in AutoCAD, so you can clip to the same extents in FME. But if you send the data back to AutoCAD then you don&#8217;t need to  manually clip the data, it&#8217;s automatically done on writing. This way you can round-trip your AutoCAD raster data without any loss of information. Of course, you can just write raster features directly to AutoCAD too.</p>
<p>Another AutoCAD update is the ability to read from one of multiple layouts in the <strong>paper space</strong>. I&#8217;m not an AutoCAD expert but to me this looks similar to the DGN models. Basically a paper space can contain multiple layouts, each with different page setup/layout settings. So FME now gives the user the option to read in only the active layout or all layouts.</p>
<p>Finally I have to mention the <strong>Revit Reader</strong> that is new to FME 2014. To watch a recorded demo click <a href="http://cdn.safe.com/videos/Webinar-AutoCAD-and-GIS-2013.mp4" target="_blank" rel="noopener noreferrer">this link</a> and skip to 56 minutes into the presentation. Basically we&#8217;ve created a Revit extension (add-in) that let&#8217;s you export data in a file format that FME is able to read using a new Revit Reader. The Reader includes a parameter called Element Type, which allows you to select the type of data to be read (2D Floorplan, 3D with Textures, Building Envelope, etc). That way the data is partly pre-processed, and easier to use than a simple dump of all elements.</p>
<p style="text-align: center;"><a href="http://cdn.safe.com/wp-content/uploads/2013/09/EvangelistBanner7.png"><img class="aligncenter" alt="EvangelistBanner7" src="https://cdn.safe.com/wp-content/uploads/2013/09/EvangelistBanner7.png" width="640" height="26" /></a></p>
<h3><img class=" wp-image-91445 alignleft" style="margin-left: 8px; margin-right: 8px;" alt="EvangelistNumber3" src="https://cdn.safe.com/wp-content/uploads/2013/12/EvangelistNumber3.png" width="60" height="62" /></h3>
<h3>PostGIS</h3>
<p><a href="http://cdn.safe.com/wp-content/uploads/2013/12/PostGIS-on-AWS-RDS-e1386379313526.jpg" target="_blank" rel="noopener noreferrer"><img class="alignright  wp-image-91529" style="border: 1px solid black; margin-left: 8px; margin-right: 8px;" alt="PostGIS on AWS RDS" src="https://cdn.safe.com/wp-content/uploads/2013/12/PostGIS-on-AWS-RDS-e1386379313526.jpg" width="260" height="195" /></a>The simple update here is that the <strong>Postgres-based</strong> Readers and Writers now include parameters for a <strong>SQL Statement to Execute Before Translation</strong>, and a SQL Statement to Execute After Translation. Other database formats have had this capability for a while, so it was high time that PostGres users got the same opportunity.</p>
<p>The other PostGIS item I wanted to mention is the ability to use an <strong>Amazon RDS Hosted PostGIS database</strong>. Amazon RDS (Relational Database Service) is a web service that allows you to set up a database in the cloud. Their latest offering is the ability to run a <a href="http://aws.amazon.com/rds/postgresql/" target="_blank" rel="noopener noreferrer">cloud-based Postgres/PostGIS database</a> and, having tested it, we&#8217;re happy to report that FME 2014 works just fine Reading and Writing from such a database. And yes, that includes raster. You can read a bit more about FME support for this on <a title="PostGIS on Amazon RDS: A Spatial Database in the Cloud" href="http://blog.safe.com/2013/12/postgis-on-aws-rds/" target="_blank" rel="noopener noreferrer">Don&#8217;s blog post</a>.</p>
<p style="text-align: center;"><a href="http://cdn.safe.com/wp-content/uploads/2013/09/EvangelistBanner7.png"><img class="aligncenter" alt="EvangelistBanner7" src="https://cdn.safe.com/wp-content/uploads/2013/09/EvangelistBanner7.png" width="640" height="26" /></a></p>
<h3><img class=" wp-image-91445 alignleft" style="margin-left: 8px; margin-right: 8px;" alt="EvangelistNumber2" src="https://cdn.safe.com/wp-content/uploads/2013/12/EvangelistNumber2.png" width="60" height="62" /></h3>
<h3>Amazon</h3>
<p>Speaking of Amazon, there are two new Amazon-related formats in FME 2014: <strong>Amazon Redshift</strong> and <strong>Amazon DynamoDB</strong>. Both are databases offered by Amazon as a cloud service.</p>
<p>Redshift is for massive (petabyte-scale) datasets. Basically it&#8217;s fast and it&#8217;s large and it&#8217;s supported by FME!</p>
<p>DynamoDB is a NoSQL (non-relational) database service. It&#8217;s schema-less, really fast, and &#8211; again &#8211; it&#8217;s supported by FME!</p>
<p style="text-align: center;"><a href="http://cdn.safe.com/wp-content/uploads/2013/09/EvangelistBanner7.png"><img class="aligncenter" alt="EvangelistBanner7" src="https://cdn.safe.com/wp-content/uploads/2013/09/EvangelistBanner7.png" width="640" height="26" /></a></p>
<h3><img class=" wp-image-91445 alignleft" style="margin-left: 8px; margin-right: 8px;" alt="EvangelistNumber1" src="https://cdn.safe.com/wp-content/uploads/2013/12/EvangelistNumber1.png" width="60" height="62" /></h3>
<h3>Google</h3>
<p>As for Google, we added three new formats in FME 2014, two for cloud services and one for a raster file format.</p>
<p>The raster file format is <strong>Google WebP</strong>. Google says this format has about 25% smaller file sizes than jpeg and is therefore useful in web applications. FME has both a Reader and Writer for this format.</p>
<p><strong>Google Cloud SQL</strong> is (obviously) a cloud-based format. We have a Reader and Writer for both spatial and non-spatial versions of this online database.</p>
<p>We also have a new Reader and Writer for <strong>Google Maps Engine</strong>, so you can read data from your FME-supported format and push it out to your GME users. We also have a new &#8220;GME Compatibility&#8221; parameter on the KML writer, which you should set if you&#8217;re creating KML for loading into GME.</p>
<p>By my count we now have eight (8) Readers and Writers for various Google formats and products:</p>
<p><a href="http://cdn.safe.com/wp-content/uploads/2014/02/Formats2014Google.png"><img class="alignnone size-full wp-image-91944" alt="Formats2014Google" src="https://cdn.safe.com/wp-content/uploads/2014/02/Formats2014Google.png" width="748" height="301" /></a></p>
<p>&nbsp;</p>
<p style="text-align: center;"><a href="http://cdn.safe.com/wp-content/uploads/2013/09/EvangelistBanner7.png"><img class="aligncenter" alt="EvangelistBanner7" src="https://cdn.safe.com/wp-content/uploads/2013/09/EvangelistBanner7.png" width="640" height="26" /></a></p>
<p>You might have noticed I didn&#8217;t include <strong>GML</strong> in my top-ten. That&#8217;s because the changes there are so significant, and their effects so wide-reaching, I&#8217;m going to create a single post all about that format. I also missed out <strong>IFC</strong> because there are some interesting updates still to come that I want to wait for.</p>
<p>Anyway, for a full list of new formats &#8211; and updates to formats &#8211; be sure to visit the <a title="What’s Great 2014 – FME Desktop" href="http://blog.safe.com/2014/01/whats-great-2014-fme-desktop/" target="_blank" rel="noopener noreferrer">What&#8217;s Great page</a> here on this blog. And while I remember, the <a href="http://www.safe.com/highlight/fme2014/contest/" target="_blank" rel="noopener noreferrer">FME 2014 launch quiz</a> is still on (until February 28th) so answer now and answer often (once a day) to win some great prizes.</p>
<p>Regards,</p>
<p>Mark</p>
<p><a href="mailto:mark.ireland@safe.com" target="_blank" rel="noopener noreferrer"><img class="alignnone size-full wp-image-5085" alt="NewBlogSignature" src="https://cdn.safe.com/wp-content/uploads/2013/09/NewBlogSignature.png" width="305" height="118" /></a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.safe.com/blog/2014/02/fmeevangelist123/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		<enclosure url="http://cdn.safe.com/videos/Webinar-AutoCAD-and-GIS-2013.mp4" length="139797345" type="video/mp4" />

			</item>
		<item>
		<title>PostGIS on Amazon RDS: A Spatial Database in the Cloud</title>
		<link>https://www.safe.com/blog/2013/12/postgis-on-aws-rds/</link>
					<comments>https://www.safe.com/blog/2013/12/postgis-on-aws-rds/#comments</comments>
		
		<dc:creator><![CDATA[Don Murray]]></dc:creator>
		<pubDate>Mon, 09 Dec 2013 22:24:42 +0000</pubDate>
				<guid isPermaLink="false">http://blog.safe.com/?p=91521</guid>

					<description><![CDATA[An announcement at the AWS:Invent 2013 conference that got me excited was the new support for PostgreSQL on Amazon Web Service&#8217;s (AWS) Relational Database Service (RDS). I crossed my fingers as I read the announcement, hoping that PostGIS was part of this. “No Way!” I thought after reading that PostGIS was indeed! I knew I had [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>An announcement at the AWS:Invent 2013 conference that got me excited was the <a href="http://techcrunch.com/2013/11/14/postgressql-now-available-on-amazons-relational-database-service/">new support for PostgreSQL</a> on Amazon Web Service&#8217;s (AWS) Relational Database Service (RDS).</p>
<p>I crossed my fingers as I read the announcement, hoping that <a title="PostGIS" href="http://postgis.net/">PostGIS</a> was part of this. “No Way!” I thought after reading that PostGIS was indeed! I knew I had to try it out.</p>
<div style="width: 650px" class="wp-caption aligncenter"><a style="font-size: 1.5em;" title="PostgreSQL Now Available On Amazon’s Relational Database Service" href="http://techcrunch.com/2013/11/14/postgressql-now-available-on-amazons-relational-database-service/"><img class=" " title="PostGIS on AWS RDS, a Spatial Database in the Cloud" alt="PostGIS on AWS RDS" src="https://cdn.safe.com/wp-content/uploads/2013/12/PostGIS-on-AWS-RDS.jpg" width="640" height="480" /></a><p class="wp-caption-text">Image via Techcrunch article: http://fme.ly/techcrunch</p></div>
<h2>Running PostGIS on RDS</h2>
<h2><img class="alignleft  wp-image-4923" title="AWS RDS Cloud" alt="AWS Cloud Logo" src="https://cdn.safe.com/wp-content/uploads/2013/09/AWS.jpg" width="156" height="156" /></h2>
<p>I fired up an RDS instance of PostgreSQL to see for myself. After connecting using the standard PostgreSQL admin tool, pgAdmin, and executing the statement <strong><em>CREATE EXTENSION postgis;</em></strong> I now had a scalable spatial database in the cloud at my fingertips.  With this there are now two spatial data solutions within RDS: SQL Server and PostGIS!  Spatial data in the cloud just keeps getting easier.</p>
<h2><img class="alignright  wp-image-4968" title="PostGIS on RDS - Spatial Database in the Cloud" alt="PostGIS Spatial Database Logo" src="https://cdn.safe.com/wp-content/uploads/2013/09/PostGIS-database-260x260.png" width="125" height="125" /></h2>
<p>I used FME to <a title="Read and Write PostGIS Data with FME" href="http://www.safe.com/solutions/for-databases/postgis/">read and write data to this PostGIS database</a> as it would any other PostGIS. Both Raster and Vector worked flawlessly. This whole process, from creating the database to using it, took about 10 minutes. Wow!</p>
<h2>FME and PostGIS in the Cloud</h2>
<h2><a title="FME" href="http://www.safe.com/fme/fme-technology/"><img class="alignleft  wp-image-91533" title="FME Cloud Data Integration Technology" alt="FME Cloud Data Integration Technology" src="https://cdn.safe.com/wp-content/uploads/2013/12/FME_RGB.png" width="170" height="117" /></a></h2>
<p>The implications of this are huge, especially when I think about our new <a href="https://fmecloud.com/">FME Cloud</a> <a title="iPaaS: Integration Platform as a Service" href="http://blog.safe.com/2013/12/what-is-ipaas/">iPaaS</a> service. FME Cloud currently has a PostGIS database as part of its installation. Now with AWS RDS supporting PostGIS, it is simple for users to use this cloud-based PostGIS database instead.</p>
<p>Doing this is a game changer.</p>
<p>With PostGIS now supported by RDS, anyone can easily deploy a class-leading fault-tolerant database that spans multiple data centers (or <strong>AZ</strong> in Amazon speak) in minutes.  These databases can also be scaled up or down to meet changing requirements. And of course all of the management and backup issues are handled by Amazon. No hardware to buy or manage.</p>
<p>Best thing is that all FME users, from FME Desktop to FME Server to FME Cloud, can take advantage of this today!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.safe.com/blog/2013/12/postgis-on-aws-rds/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>FME 2014 Sneak Peek: More Ado About Nothing</title>
		<link>https://www.safe.com/blog/2013/11/fmeevangelist119/</link>
					<comments>https://www.safe.com/blog/2013/11/fmeevangelist119/#comments</comments>
		
		<dc:creator><![CDATA[Mark Ireland]]></dc:creator>
		<pubDate>Tue, 19 Nov 2013 17:48:44 +0000</pubDate>
				<guid isPermaLink="false">http://blog.safe.com/?p=5519</guid>

					<description><![CDATA[A big highlight for FME 2014 will be... nothing! Or, to be precise, the updates we've made to handling null attribute values.

In this article I'll cover the background to nulls and other forms of nothing, and highlight what functionality we've added and how it all works. I'll touch on reading and writing nulls, transforming nulls, data inspection, the works of Thomas Hardy, and how to create a vortex in space-time.]]></description>
										<content:encoded><![CDATA[<style><!--
p {font-size:14px; line-height:150%}
--></style>
<p>Hi FME&#8217;ers,<br />
In a <a title="Much Ado About Null" href="http://blog.safe.com/2011/10/fmeevangelist89/" target="_blank" rel="noopener noreferrer">previous Evangelist post</a> (from 2012) I talked about <strong>nulls</strong> in data and how FME handled them. In 2014 we have exciting new functionality that deals with null values in a proper way.</p>
<p>Because we&#8217;ve changed how FME behaves, if you think your source data may contain nulls then it&#8217;s important you read this article.</p>
<p><strong><a href="http://cdn.safe.com/wp-content/uploads/2013/09/EvangelistBanner7.png"><img class="aligncenter size-full wp-image-5069" alt="EvangelistBanner7" src="https://cdn.safe.com/wp-content/uploads/2013/09/EvangelistBanner7.png" width="640" height="26" /></a></strong><em></em></p>
<p><em>You were nothing to me once, and I was contented; you are now nothing to me again. But how different the second nothing is from the first! &#8211; Thomas Hardy in Far From the Madding Crowd critiques our new functionality!<br />
</em></p>
<p><strong><a href="http://cdn.safe.com/wp-content/uploads/2013/09/EvangelistBanner7.png"><img class="aligncenter size-full wp-image-5069" alt="EvangelistBanner7" src="https://cdn.safe.com/wp-content/uploads/2013/09/EvangelistBanner7.png" width="640" height="26" /></a></strong><em></em></p>
<p><strong>Nulls in General</strong><br />
First let&#8217;s recap what we mean by null. In general there are three types of &#8216;nothing&#8217; values:</p>
<ul>
<li>The attribute exists and is an empty value (Empty)</li>
<li>The attribute exists and is NULL (NULL)</li>
<li>The attribute doesn’t exist (Non-existent)</li>
</ul>
<p>I say &#8216;three&#8217; types, but really there are many more. A numeric attribute with a value of zero could be taken to mean nothing. Also there are NaN (Not-A-Number) values, nils in XML, Nodata values in raster, and many others (did you know Excel has its own special version of &#8216;nothing&#8217;?) &#8211; in fact I&#8217;m told by our developers that they found fifteen (15) types of nothing; but here we&#8217;re looking at the three primary types of nothing and why null is special.</p>
<p><a href="http://cdn.safe.com/wp-content/uploads/2013/11/NullsWarpingData.png" target="_blank" rel="noopener noreferrer"><img class="alignnone size-medium wp-image-91259" style="border: 1px solid black;" alt="NullsWarpingData" src="https://cdn.safe.com/wp-content/uploads/2013/11/NullsWarpingData-300x207.png" width="300" height="207" /></a></p>
<p>Yes, fifteen types of nothing! When you get all of them in a single dataset it causes a vortex in space-time! True.</p>
<p>But for most people nulls will occur in a database. A true null means a field has been deliberately set to &#8216;nothing&#8217;. It&#8217;s not the same as an empty value at all. The closest non-IT analogy I can think of is when you fill in your name on a questionnaire. You could fill in your middle name (in which case it has a value) or you could write &#8220;n/a&#8221; or cross the field out. That would be equivalent to an empty field; it&#8217;s a positive value and we know you have no middle name. However, if you left that field blank, that would be a null; we can&#8217;t tell whether or not you have a middle name. It&#8217;s a value that signifies &#8220;unknown&#8221;, sort of a placeholder for real data.</p>
<p><strong><a href="http://cdn.safe.com/wp-content/uploads/2013/09/EvangelistBanner7.png"><img class="aligncenter size-full wp-image-5069" alt="EvangelistBanner7" src="https://cdn.safe.com/wp-content/uploads/2013/09/EvangelistBanner7.png" width="640" height="26" /></a></strong><em></em></p>
<p><strong>Nulls and FME</strong><br />
Up until now FME did not have explicit support for nulls; we supported empty values and non-existent attributes (plus other forms of nothing, like NaN) but null wasn&#8217;t a concept that our internal data model understood. If an attribute was null then it was treated as if it didn&#8217;t exist. However, in 2014 we&#8217;ve completely overhauled that data model to incorporate null value support. So FME can now read null values, write null values, and carry out transformations on them too.</p>
<p>In terms of databases, it means you can now much more easily identify values that are null and write nulls to new rows, plus change existing rows to be null (which you couldn&#8217;t do before).</p>
<p><a href="http://cdn.safe.com/wp-content/uploads/2013/11/DifferentFormatsDifferentNulls.png" target="_blank" rel="noopener noreferrer"><img class="alignnone size-full wp-image-91260" alt="DifferentFormatsDifferentNulls" src="https://cdn.safe.com/wp-content/uploads/2013/11/DifferentFormatsDifferentNulls.png" width="800" height="236" /></a></p>
<p>But, like people, formats come in all shapes and sizes and no two are the same. Interestingly, some formats will support all three of our primary nothing types; some will support just one or two. For example, Shape supports empty values, but not nulls, whereas GeoMedia supports nulls, but doesn&#8217;t recognize empty values. Databases generally store both null and empty values, and let you query them too. JSON nicely supports the concept of all three, whereas VPF has at least <strong>five</strong> types of nothing, maybe six depending on the field type (getting close to a space-time ripple there)! So even with null support, the behaviour of FME&#8217;s Readers and Writers will vary according to format, and you have to be aware of that.</p>
<p><strong><a href="http://cdn.safe.com/wp-content/uploads/2013/09/EvangelistBanner7.png"><img class="aligncenter size-full wp-image-5069" alt="EvangelistBanner7" src="https://cdn.safe.com/wp-content/uploads/2013/09/EvangelistBanner7.png" width="640" height="26" /></a></strong><em></em></p>
<p><strong>Reading and Writing Nulls</strong><br />
If your source data includes null values the FME Reader will now emit null values. You don&#8217;t need to update or replace the Reader in your workspace, it will happen automatically. When you write the data out then the Writer will write null values too. If the format you are writing doesn&#8217;t support nulls, then the data will be handled appropriately &#8211; replaced with zero, or an empty value, or whatever that format requires.</p>
<p>So a translation involving nulls should just work. You don&#8217;t need to do anything special to your workspace, even if it&#8217;s an older one.</p>
<p>Which formats does this apply to? I&#8217;ve created a list at the bottom of the article for you to check, and you can find that list on <a href="http://fmepedia.safe.com/articles/FAQ/Does-FME-support-nulls" target="_blank" rel="noopener noreferrer">FMEpedia</a> too. We cover all the major databases, but if there&#8217;s a format you think we&#8217;ve missed then please do let us know.</p>
<p><strong><a href="http://cdn.safe.com/wp-content/uploads/2013/09/EvangelistBanner7.png"><img class="aligncenter size-full wp-image-5069" alt="EvangelistBanner7" src="https://cdn.safe.com/wp-content/uploads/2013/09/EvangelistBanner7.png" width="640" height="26" /></a></strong><em></em></p>
<p><strong>Data Inspection</strong><br />
So now nulls have been incorporated into the FME Data model, we need a way to inspect the data, and a way to distinguish true nulls from other forms of &#8220;nothing&#8221;.</p>
<p>When you use the FME Data Inspector to examine your data before translation (you are inspecting your data before translation, aren&#8217;t you?) you&#8217;ll see null values displayed in the table view:</p>
<p><a href="http://cdn.safe.com/wp-content/uploads/2013/11/NullTableView.png" target="_blank" rel="noopener noreferrer"><img class="alignnone size-full wp-image-91246" alt="NullTableView" src="https://cdn.safe.com/wp-content/uploads/2013/11/NullTableView.png" width="466" height="204" /></a></p>
<p>&#8230;and in the Feature Information window:</p>
<p><a href="http://cdn.safe.com/wp-content/uploads/2013/11/NullFeatureInfo.png" target="_blank" rel="noopener noreferrer"><img class="alignnone size-full wp-image-91247" style="border: 1px solid black;" alt="NullFeatureInfo" src="https://cdn.safe.com/wp-content/uploads/2013/11/NullFeatureInfo.png" width="458" height="384" /></a></p>
<p>When an attribute exists, but is empty, the Table View window will show it as an empty field (i.e. the cell in the table is blank) but when the attribute is missing completely (i.e. just doesn&#8217;t exist for that feature) then it flags it as such:</p>
<p><a href="http://cdn.safe.com/wp-content/uploads/2013/11/MissingValueTableView.png" target="_blank" rel="noopener noreferrer"><img class="alignnone size-full wp-image-91248" alt="MissingValueTableView" src="https://cdn.safe.com/wp-content/uploads/2013/11/MissingValueTableView.png" width="558" height="215" /></a></p>
<p>Here TaxCoord is part of the source schema, but these features don&#8217;t have it at all. So now you can totally identify which attributes are null, which are empty, and which are missing.</p>
<p><strong><a href="http://cdn.safe.com/wp-content/uploads/2013/09/EvangelistBanner7.png"><img class="aligncenter size-full wp-image-5069" alt="EvangelistBanner7" src="https://cdn.safe.com/wp-content/uploads/2013/09/EvangelistBanner7.png" width="640" height="26" /></a></strong><em></em></p>
<p><strong>Nulls and Transformers</strong><br />
OK, so if we&#8217;re reading this data, and have an internal representation, then we also need a way for you to handle it in Workbench. Therefore we&#8217;ve updated several transformers to specifically handle nulls, updated many others to simply cope with null data, and added a new transformer to carry out new null functionality.</p>
<p>The list of transformers with null support is, like the formats, listed as an appendix below.</p>
<p>To give you some examples, though, let&#8217;s first look at the AttributeCreator.</p>
<p><a href="http://cdn.safe.com/wp-content/uploads/2013/11/AttrCreatorNulls.png" target="_blank" rel="noopener noreferrer"><img class="alignnone size-full wp-image-91249" alt="AttrCreatorNulls" src="https://cdn.safe.com/wp-content/uploads/2013/11/AttrCreatorNulls.png" width="593" height="431" /></a></p>
<p>Notice how you can set (or create) a null attribute using the new entry on the drop-down list, or by typing &#8220;&lt;null&gt;&#8221; into that field. You&#8217;ll find you can also do this with other attribute-setting transformers, such as the AttributeValueMapper:</p>
<p><a href="http://cdn.safe.com/wp-content/uploads/2013/11/AttrValueMapperNulls.png" target="_blank" rel="noopener noreferrer"><img class="alignnone size-full wp-image-91251" style="border: 1px solid black;" alt="AttrValueMapperNulls" src="https://cdn.safe.com/wp-content/uploads/2013/11/AttrValueMapperNulls.png" width="334" height="192" /></a></p>
<p>The Tester transformer doesn&#8217;t look much different to before, except for rewording the operators to be more precise, but now when you choose &#8220;Attribute is Null&#8221; it really is checking for a true null value:</p>
<p><a href="http://cdn.safe.com/wp-content/uploads/2013/11/TesterNullHandling.png" target="_blank" rel="noopener noreferrer"><img class="alignnone size-full wp-image-91252" alt="TesterNullHandling" src="https://cdn.safe.com/wp-content/uploads/2013/11/TesterNullHandling.png" width="157" height="242" /></a></p>
<p>Other examples would be the ChangeDetector and the Matcher. The ChangeDetector and Matcher will now truly compare nulls so that &#8220;null&#8221; is not the same as &#8220;missing&#8221; as it was before. The change in the parameters here is just the option to turn this behaviour on or off &#8211; that way your workspace can be made to run the way it always has (and in fact &#8211; for backwards compatibility reasons &#8211; it will default to doing so):</p>
<p><a href="http://cdn.safe.com/wp-content/uploads/2013/11/MatcherNullHandling.png" target="_blank" rel="noopener noreferrer"><img class="alignnone size-full wp-image-91253" style="border: 1px solid black;" alt="MatcherNullHandling" src="https://cdn.safe.com/wp-content/uploads/2013/11/MatcherNullHandling.png" width="439" height="147" /></a></p>
<p>Like I mentioned, other transformers have been updated to better cope with nulls, even if their parameters and outward appearance haven&#8217;t changed. For example, the StringPadder won&#8217;t attempt to pad a null string, because that would change it to no longer being null. It will still let you pad empty strings, because that won&#8217;t affect the attribute&#8217;s status.</p>
<p>And then we&#8217;ve added a new transformer to handle nulls, called the NullAttributeMapper.</p>
<p>The NullAttributeMapper is a replacement for the NullAttributeReplacer transformer. Basically the function here is to map attribute values to or from null, depending on the original attribute value:</p>
<p><a href="http://cdn.safe.com/wp-content/uploads/2013/11/ParkNullExample.png" target="_blank" rel="noopener noreferrer"><img class="alignnone size-full wp-image-91254" alt="ParkNullExample" src="https://cdn.safe.com/wp-content/uploads/2013/11/ParkNullExample.png" width="428" height="314" /></a></p>
<p>For example here, if my ParkId attribute is missing, or is empty, or has a value of 9999, then I will replace it with null. I&#8217;d probably do this when I&#8217;m reading from a format that doesn&#8217;t support nulls, and writing to one that does. That way I get true null values in my output dataset. Similarly I could map null values to an empty field or a specific value:</p>
<p><a href="http://cdn.safe.com/wp-content/uploads/2013/11/ParkNullExample2.png" target="_blank" rel="noopener noreferrer"><img class="alignnone size-full wp-image-91255" style="border: 1px solid black;" alt="ParkNullExample2" src="https://cdn.safe.com/wp-content/uploads/2013/11/ParkNullExample2.png" width="408" height="173" /></a></p>
<p>I probably wouldn&#8217;t need to map to an empty field just for a Writer, because if the format doesn&#8217;t support nulls, FME will automatically convert null values to something appropriate for the format. But I might do that if I deliberately wanted to give them a new value or make them empty to match other data.</p>
<p>The other great things about this transformer are that it maps multiple attributes, and that it&#8217;s not just limited to nulls; so you could even use it instead of the AttributeValueMapper for some scenarios.</p>
<p><strong><a href="http://cdn.safe.com/wp-content/uploads/2013/09/EvangelistBanner7.png"><img class="aligncenter size-full wp-image-5069" alt="EvangelistBanner7" src="https://cdn.safe.com/wp-content/uploads/2013/09/EvangelistBanner7.png" width="640" height="26" /></a></strong><em></em></p>
<p><strong>Benefits and Consequences</strong><br />
I think the benefits of this are fairly obvious, so I won&#8217;t say anything except that to mention we&#8217;ve also updated our APIs to include this functionality too, to ensure developers get the benefits as much as regular users.</p>
<p>However, you do need to be prepared for the effect of reading nulls as &#8220;real&#8221; attribute values, rather than as a missing attribute.</p>
<p>Many transformers will ignore missing attributes, and you may have come to rely upon that behaviour. But that data might be read as a null now, and that&#8217;s going to be treated differently. For example, the ListElementCounter won&#8217;t include attributes that are missing. It will, however, include nulls &#8211; because these are real values. The two transformers that I think need most careful scrutiny are the Tester and the FeatureMerger.</p>
<p>With the Tester you might check for an attribute that is empty (attr=&#8221;&#8221;) or that &#8220;doesn&#8217;t exist&#8221;. In FME 2014 that attribute might now be read as null instead; in that case the test would fail, where it passed before. Basically, the functionality is better in 2014, it&#8217;s just that you&#8217;ve come to rely on the older (less good) behaviour. In this scenario you could change the test to be &#8220;Attribute is Null&#8221; instead. Otherwise, the new NullAttributeMapper transformer can be inserted to change nulls to missing and so revert the behaviour.</p>
<p>For the FeatureMerger, think of what happens when you merge attributes from one feature to another, particularly when a &#8220;requestor&#8221; attribute has the same name as a &#8220;supplier&#8221; attribute. The requestor attribute will be overwritten, except for where the supplier attribute is missing. But now, if your missing records are represented as nulls, that requestor would get overwritten as a null. Again it&#8217;s because null is a &#8220;real value&#8221;, and again the NullAttributeMapper can be used to workaround this.</p>
<p>Yes, cases like this are going to be fairly rare and obscure, but it&#8217;s worth being aware of them. We&#8217;d like you to embrace the new behaviour, but if you want to revert then use the NullAttributeMapper. Basically if you put a NullAttributeMapper into your workspace, directly after your Readers, and map &#8220;Null&#8221; to &#8220;Missing&#8221; then the behaviour in the rest of the workspace would be the same as before (although it wouldn&#8217;t be as good!)</p>
<p>For the latest info on null behaviour (and the formats/transformers supported) see our <a href="http://fmepedia.safe.com/articles/FAQ/Does-FME-support-nulls" target="_blank" rel="noopener noreferrer">null support page</a> on FMEpedia.</p>
<p><strong><a href="http://cdn.safe.com/wp-content/uploads/2013/09/EvangelistBanner7.png"><img class="aligncenter size-full wp-image-5069" alt="EvangelistBanner7" src="https://cdn.safe.com/wp-content/uploads/2013/09/EvangelistBanner7.png" width="640" height="26" /></a></strong><em></em></p>
<p><strong>Conclusion</strong><br />
I think this update is going to be oh so useful to many of our users. Our developers have done a super job implementing this big change (any time you update the core data model it&#8217;s a big change) and then incorporating it into all these different Readers, Writers, and transformers.</p>
<p>If you notice any parts that could be improved (either functionality or user experience) then please do <a href="https://knowledge.safe.com/content/idea/list.html" target="_blank" rel="noopener noreferrer">let us know</a> about your experiences (good or bad).</p>
<p><a href="mailto:mark.ireland@safe.com" target="_blank" rel="noopener noreferrer"><img class="alignnone size-full wp-image-5085" alt="NewBlogSignature" src="https://cdn.safe.com/wp-content/uploads/2013/09/NewBlogSignature.png" width="305" height="118" /></a></p>
<p><strong><a href="http://cdn.safe.com/wp-content/uploads/2013/09/EvangelistBanner7.png"><img class="aligncenter size-full wp-image-5069" alt="EvangelistBanner7" src="https://cdn.safe.com/wp-content/uploads/2013/09/EvangelistBanner7.png" width="640" height="26" /></a></strong><em></em></p>
<p>Appendix 1: List of null-complete formats:</p>
<ul>
<li>FFS (obviously)</li>
<li>ArcSDE formats</li>
<li>Autodesk SDF</li>
<li>DB2</li>
<li>Geodatabase API</li>
<li>Geodatabase ArcObjects and family</li>
<li>GeoMedia</li>
<li>GML</li>
<li>Informix</li>
<li>Ingres</li>
<li>MS Access and Excel</li>
<li>MSSQL Server (Windows Azure SQL Database)</li>
<li>MySQL (MariaDB) (Google Cloud SQL)</li>
<li>Netezza</li>
<li>ODBC2</li>
<li>Odata</li>
<li>Oracle and family</li>
<li>PostGIS and family (inc Redshift)</li>
<li>Teradata (JDBC and TPT formats)</li>
<li>TFS</li>
<li>VPF</li>
</ul>
<p>Appendix 2: List of null-support transformers (ones with exposed null parameters or functionality):</p>
<ul>
<li>AttributeClassifier</li>
<li>AttributeCreator</li>
<li>AttributeFilter</li>
<li>AttributeRenamer</li>
<li>AttributeValueMapper</li>
<li>ChangeDetector</li>
<li>Matcher</li>
<li>NullAttributeMapper</li>
<li>Tester</li>
</ul>
<p><em><strong>NB:</strong> Do be aware that many other transformers will now handle nulls without parameters; for example the Logger will log null values, the InlineQuerier can handle null values in its database, the ListHistogrammer will count the number of nulls, and so on.</em></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.safe.com/blog/2013/11/fmeevangelist119/feed/</wfw:commentRss>
			<slash:comments>7</slash:comments>
		
		
			</item>
		<item>
		<title>FME 2014: An Early Sneak Peek</title>
		<link>https://www.safe.com/blog/2013/06/fmeevangelist116/</link>
		
		<dc:creator><![CDATA[Mark Ireland]]></dc:creator>
		<pubDate>Mon, 24 Jun 2013 14:53:03 +0000</pubDate>
				<guid isPermaLink="false">http://evangelism.safe.com/?p=3290</guid>

					<description><![CDATA[FME 2014: An Early Sneak Peek: By Mark Ireland Hi FME&#8217;ers, Since FME2014 beta versions are now available on our download page, I thought I&#8217;d cover &#8211; in brief &#8211; a couple of the obvious changes. Mac and Linux OK, this is obviously the big news and you probably know this already: FME Workbench is [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><span style="color: #ffffff;">FME 2014: An Early Sneak Peek: By Mark Ireland</span></p>
<p>Hi FME&#8217;ers,<br />
Since FME2014 beta versions are now available on <a href="http://www.safe.com/support/support-resources/fme-downloads/beta/" target="_blank" rel="noopener noreferrer">our download page</a>, I thought I&#8217;d cover &#8211; in brief &#8211; a couple of the obvious changes.</p>
<p><a href="http://cdn.safe.com/wp-content/uploads/2008/08/newbanner1.png"><img class="aligncenter size-full wp-image-351" title="newbanner1" alt="" src="https://cdn.safe.com/wp-content/uploads/2008/08/newbanner1.png" width="499" height="24" /></a></p>
<p><strong>Mac and Linux</strong><br />
OK, this is obviously the big news and you probably know this already: FME Workbench is now available on Linux and Mac operating systems.</p>
<p><a href="http://www.safe.com/support/support-resources/fme-downloads/beta/" target="_blank" rel="noopener noreferrer"><img class="alignnone size-medium wp-image-3291" title="betaversionsmaclinux" alt="" src="https://cdn.safe.com/wp-content/uploads/2013/06/betaversionsmaclinux.png" width="324" height="179" /></a></p>
<p>It wouldn&#8217;t be the first time I&#8217;ve heard a user say they only use Windows because of FME; so very shortly you&#8217;ll be able to switch completely (or have to find another excuse for sticking)!</p>
<p><a href="http://cdn.safe.com/wp-content/uploads/2008/08/newbanner1.png"><img class="aligncenter size-full wp-image-351" title="newbanner1" alt="" src="https://cdn.safe.com/wp-content/uploads/2008/08/newbanner1.png" width="499" height="24" /></a></p>
<p><strong>New GUI</strong><br />
We didn&#8217;t set out to redesign the interface but, because we wanted to add new platform support, we had to change the technology that drives the Workbench canvas. So you&#8217;ll see a lot has changed in the basic appearance of FME:</p>
<p><a href="http://cdn.safe.com/wp-content/uploads/2013/06/newguilookandfeel2014.png" target="_blank" rel="noopener noreferrer"><img class="alignnone size-full wp-image-3292" title="newguilookandfeel2014" alt="" src="https://cdn.safe.com/wp-content/uploads/2013/06/newguilookandfeel2014.png" width="499" height="167" /></a></p>
<p>We tried to keep the same look and feel but differences were inevitable. After an initial moment of surprise this design is really growing on me and I hope it will for you too. Of course, we&#8217;re tweaking things as we&#8217;re going along and the new technology does provide some additional benefits that we can make use of (more on that below).</p>
<p><a href="http://cdn.safe.com/wp-content/uploads/2008/08/newbanner1.png"><img class="aligncenter size-full wp-image-351" title="newbanner1" alt="" src="https://cdn.safe.com/wp-content/uploads/2008/08/newbanner1.png" width="499" height="24" /></a></p>
<p><strong>Nulls</strong><br />
In a <a href="http://evangelism.safe.com/fmeevangelist89/" target="_blank" rel="noopener noreferrer">previous Evangelist post</a> I talked about updates to our support for null values. Basically it&#8217;s been a bit of a compromise but now, in 2014, we do have nulls fully incorporated into our data model.</p>
<p><a href="http://cdn.safe.com/wp-content/uploads/2013/06/oraclenull2014.png" target="_blank" rel="noopener noreferrer"><img class="alignnone size-full wp-image-3293" style="margin-top: 8px; margin-bottom: 8px;" title="oraclenull2014" alt="" src="https://cdn.safe.com/wp-content/uploads/2013/06/oraclenull2014.png" width="500" height="102" /></a><br />
You can see here how reading from an Oracle database I actually get &lt;null&gt; as a value, rather than it being empty or missing completely. Support is there too for SQL Server, PostGIS, and Geodatabase.</p>
<p>Writing data allows this too, and you can set null values in various ways. Firstly we have a new NullAttributeMapper transformer:</p>
<p><a href="http://cdn.safe.com/wp-content/uploads/2013/06/nullattributemapper2014.png" target="_blank" rel="noopener noreferrer"><img class="alignnone size-medium wp-image-3294" title="nullattributemapper2014" alt="" src="https://cdn.safe.com/wp-content/uploads/2013/06/nullattributemapper2014-400x293.png" width="400" height="293" /></a></p>
<p>&#8230;where I can change an attribute from being empty or missing (or any other value) into a true null.</p>
<p>We also have updates to other transformers, such as the AttributeCreator:</p>
<p><a href="http://cdn.safe.com/wp-content/uploads/2013/06/2014null.png" target="_blank" rel="noopener noreferrer"><img class="alignnone size-medium wp-image-3295" title="2014null" alt="" src="https://cdn.safe.com/wp-content/uploads/2013/06/2014null-400x249.png" width="400" height="249" /></a></p>
<p>We&#8217;re continuing to work on this null support and add it to other transformers too, where appropriate.</p>
<p><a href="http://cdn.safe.com/wp-content/uploads/2008/08/newbanner1.png"><img class="aligncenter size-full wp-image-351" title="newbanner1" alt="" src="https://cdn.safe.com/wp-content/uploads/2008/08/newbanner1.png" width="499" height="24" /></a></p>
<p><strong>Other Stuff</strong><br />
There are, of course, a bunch of other changes. In the GUI, for example, you can now select features that overlap a selection window, like so:</p>
<p><a href="http://cdn.safe.com/wp-content/uploads/2013/06/selectionhighlights2014.png" target="_blank" rel="noopener noreferrer"><img class="alignnone size-medium wp-image-3296" title="selectionhighlights2014" alt="" src="https://cdn.safe.com/wp-content/uploads/2013/06/selectionhighlights2014.png" width="344" height="270" /></a></p>
<p>Previously you would have had to completely surround the objects with the selection window to get them. We think this is an improvement over that older behaviour (I certainly find it easier).</p>
<p>Another item in the What&#8217;s New file is:</p>
<pre>Workbench: Added pinch gesture support for zooming canvas</pre>
<p>&#8230;suggesting to me that we support gestures on a touch screen device (I&#8217;m guessing Windows 8).</p>
<p>Bookmarks change too in 2014. Now objects in a bookmark are added/removed by dragging them in/out; not by moving the bookmark over them. This means you won&#8217;t pick up objects by moving a bookmark, as you could inadvertently do in older versions. Give it a try (I can&#8217;t really illustrate the concept with a screenshot!)</p>
<p><a href="http://cdn.safe.com/wp-content/uploads/2008/08/newbanner1.png"><img class="aligncenter size-full wp-image-351" title="newbanner1" alt="" src="https://cdn.safe.com/wp-content/uploads/2008/08/newbanner1.png" width="499" height="24" /></a></p>
<p><strong>Summary</strong><br />
Safe&#8217;s founders &#8211; <a href="https://twitter.com/donatsafe" target="_blank" rel="noopener noreferrer">Don</a> and <a href="https://twitter.com/daleatsafe" target="_blank" rel="noopener noreferrer">Dale</a> &#8211; are always thinking about ways to make FME better.</p>
<p>Dale says that change is good&#8230; as long as it makes things better.</p>
<p>Don talks about the Restaurant Model, and how we strive to make both the food (FME) and the service (Support) as good as we can.</p>
<p>Well I guess you could say the biggest change here is in our restaurant&#8217;s decor and, like a restaurant, it should make for a more appetizing and palatable experience. So, does this decor work for you? Would you award us a three-star review? We&#8217;d really like to hear your thoughts, ideas, and &#8211; even &#8211; criticisms of FME2014.</p>
<p>So, <a href="http://www.safe.com/support/support-resources/fme-downloads/beta/" target="_blank" rel="noopener noreferrer">give it a try</a> and <a href="http://www.safe.com/supportrequest" target="_blank" rel="noopener noreferrer">let us know</a> what you think.</p>
<p>Regards,</p>
<p><a href="mailto:mark.ireland@safe.com" target="_blank" rel="noopener noreferrer"><img class="alignnone size-full wp-image-3058" title="sig2013" alt="" src="https://cdn.safe.com/wp-content/uploads/2013/02/sig2013.jpg" width="402" height="233" /></a></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>FME 2013-SP2: Excelsior!</title>
		<link>https://www.safe.com/blog/2013/06/fmeevangelist115/</link>
		
		<dc:creator><![CDATA[Mark Ireland]]></dc:creator>
		<pubDate>Tue, 11 Jun 2013 16:57:32 +0000</pubDate>
				<guid isPermaLink="false">http://evangelism.safe.com/?p=3252</guid>

					<description><![CDATA[FME 2013-SP2: Excelsior!: By Mark Ireland Hi FME&#8217;ers, FME 2013-SP2 has been released! It should be about build 13499 meaning there have been 50 builds since SP1 was released; 50 builds that include a whole bunch of updates. Usually by now we&#8217;re mostly adding just bug fixes and minor updates &#8211; but for 2013 we&#8217;re [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><span style="color: #ffffff;">FME 2013-SP2: Excelsior!: By Mark Ireland</span></p>
<p>Hi FME&#8217;ers,<br />
FME 2013-SP2 has been released! It should be about build 13499 meaning there have been 50 builds since SP1 was released; 50 builds that include a whole bunch of updates. Usually by now we&#8217;re mostly adding just bug fixes and minor updates &#8211; but for 2013 we&#8217;re actually adding some new functionality that we believe you shouldn&#8217;t have to wait until 2014 for.</p>
<p>So, here&#8217;s my rundown on the top 10 new items in FME 2013-SP2.</p>
<p><a href="http://cdn.safe.com/wp-content/uploads/2008/08/newbanner1.png"><img class="aligncenter size-full wp-image-351" title="newbanner1" alt="" src="https://cdn.safe.com/wp-content/uploads/2008/08/newbanner1.png" width="499" height="24" /></a></p>
<p><a href="http://cdn.safe.com/wp-content/uploads/2013/06/topten.png"><img class="alignleft size-medium wp-image-3275" title="topten" alt="" src="https://cdn.safe.com/wp-content/uploads/2013/06/topten.png" width="156" height="156" /></a>OK, I wanted to show 10 new things, and I only managed to whittle the list down to 22. So I&#8217;m merging some items together (and dropping a few others).</p>
<p>If you want to just see the REALLY big-ticket items, then simply skip down to the top 5, all of which will be worth your time to examine. Likewise, if you are a full-on FME geek who wants to see the full list, then check out the <a href="https://www.safe.com/fme/new-features/" target="_blank" rel="noopener noreferrer">What&#8217;s New file</a> on safe.com &#8211; just be sure to finish reading here first!</p>
<p><a href="http://cdn.safe.com/wp-content/uploads/2012/03/thinbanner1.png"><img class="aligncenter size-full wp-image-2538" title="thinbanner1" alt="" src="https://cdn.safe.com/wp-content/uploads/2012/03/thinbanner1.png" width="500" height="6" /></a></p>
<p><strong>10) Most-Needed Fixes</strong><br />
Here we have the most-needed updates; i.e. updates that have the most user requests against them. I list them here because if this many users wanted these fixed I&#8217;m guessing others may find them useful too.</p>
<p>&#8211; Fixed problems connecting to the FME License Server via a VPN (6 cases)<br />
&#8211; Added a new Postgres/PostGIS reader parameter to control what tables are shown in the table picker (7 cases)<br />
&#8211; Added support for Civil3D 2013 plus support for pipe and structure entities (12 cases)</p>
<p>Incidentally, this just goes to show you should always let us know of any suggestions or issues &#8211; the more requests we get, the more likely we are to do something!</p>
<p><a href="http://cdn.safe.com/wp-content/uploads/2012/03/thinbanner1.png"><img class="aligncenter size-full wp-image-2538" title="thinbanner1" alt="" src="https://cdn.safe.com/wp-content/uploads/2012/03/thinbanner1.png" width="500" height="6" /></a></p>
<p><strong>9) New Transformers</strong><br />
SP2 has a couple of new transformers of note: the AttributePivoter and the JSONUpdater.</p>
<p>The JSONUpdater &#8211; as you can probably guess &#8211; is the JSON equivalent to the XMLUpdater. These updater transformers are great for applying changes to an existing snippet of JSON/XML without having to convert them to an FME (GIS) relational data structure.</p>
<p>The AttributePivoter is going to be less familiar to you and I have to play with it some more to fully understand the capabilities. It&#8217;s all about what we&#8217;re calling Data Analytics. Pivot tables generally involve the grouping and summing or counting of records in a group.</p>
<p>What I tried this on was election results in a spreadsheet with this format:</p>
<pre>Poll Number, Name, Votes
1, Mark, 346
1, Dale, 321
1, Don, 412
2, Mark, 400
2, Dale, 402
2, Don, 232
etc</pre>
<p>The AttributePivoter lets me group that data by ROW, so I can group by Poll Number to start with and find out how many votes were cast in any particular poll. Then I can start grouping by COLUMN too, to create the idea of a pivot (how many votes for which candidate in a poll).</p>
<p><a href="http://cdn.safe.com/wp-content/uploads/2013/06/attributepivoter.png" target="_blank" rel="noopener noreferrer"><img class="alignnone size-medium wp-image-3254" title="attributepivoter" alt="" src="https://cdn.safe.com/wp-content/uploads/2013/06/attributepivoter-399x189.png" width="399" height="189" /></a></p>
<p>I&#8217;m going to have to play with this some more, but I <em>think </em>I can see the potential uses that are now available.</p>
<p><a href="http://cdn.safe.com/wp-content/uploads/2012/03/thinbanner1.png"><img class="aligncenter size-full wp-image-2538" title="thinbanner1" alt="" src="https://cdn.safe.com/wp-content/uploads/2012/03/thinbanner1.png" width="500" height="6" /></a></p>
<p><strong>8) Performance</strong><br />
Just one item of note here. From the What&#8217;s New file:</p>
<blockquote><p><em>Spatial Index: Improved spatial indexing performance in the FFS writer, and the Recorder and Inspector transformers. This reduces memory use and allows greater data volumes.</em></p></blockquote>
<p>Why this is important is because the FFS writer gets used all over FME, particularly when sending data from Workbench to a Data Inspector. With all the talk about &#8220;Big Data&#8221; recently, this helps FME handle datasets larger than ever before.</p>
<p><a href="http://cdn.safe.com/wp-content/uploads/2012/03/thinbanner1.png"><img class="aligncenter size-full wp-image-2538" title="thinbanner1" alt="" src="https://cdn.safe.com/wp-content/uploads/2012/03/thinbanner1.png" width="500" height="6" /></a></p>
<p><strong>7) Database Format Stuff</strong><br />
These are items of the type I find hard to categorize. They aren&#8217;t really major&#8230; unless you happen to be one of the users who will need them! Then they are of great interest.</p>
<p><strong>Netezza</strong>: There are various improvements here. If you&#8217;re unaware, Netezza produces data warehousing hardware and software, and I&#8217;d say is at the &#8220;Big Data&#8221; end of the market. For SP2 we&#8217;ve added support on x64 for Netezza 6 and 7, but have also added writing support for their new spatial database &#8211; an Esri-flavour of Netezza that handles spatial data SDE-style (reading was introduced in 2013-SP1). So if you want to get spatial data into and out of Netezza, FME is the tool for you!</p>
<p><strong>MariaDB</strong>: This is interesting. We had to pull MySQL support out of FME recently, for non-technical reasons. So we&#8217;ve instead implemented a new Reader/Writer for MariaDB (on 32-bit Windows, 64-bit Windows, and 64-bit Linux). Apparently MariaDB is a &#8220;drop-in replacement for MySQL&#8221; and so if you were pained at MySQL&#8217;s removal, you should be able to use this reader and writer with no visible difference to your workflow.</p>
<p><a href="http://cdn.safe.com/wp-content/uploads/2012/03/thinbanner1.png"><img class="aligncenter size-full wp-image-2538" title="thinbanner1" alt="" src="https://cdn.safe.com/wp-content/uploads/2012/03/thinbanner1.png" width="500" height="6" /></a></p>
<p><strong>6) CSV Updates</strong><br />
There have been some interesting updates for CSV, including a change in methodology.</p>
<p>The Parameters dialog now lets you edit the source schema (attribute types) so FME knows what sort of values to expect in the fields. This is important especially when you only scan the first few rows (perhaps you have a huge dataset).</p>
<p>Secondly, we&#8217;ve added the format attribute <em>csv_total_number_of_columns</em> to indicate the total number of columns in a row. This compliments the existing <em>csv_number_of_fields</em> format attribute which indicates the number of non-empty values in a row</p>
<p>Finally, the CSV reader has been made more like the Text File reader, in that you only get a single feature type regardless of how many files you select. You could think of this as being automatically dynamic. If you do want individual types you can control this using the new parameter &#8220;Group By Filename&#8221;.</p>
<p><a href="http://cdn.safe.com/wp-content/uploads/2013/06/csvdatasetsp2.png" target="_blank" rel="noopener noreferrer"><img class="alignnone size-medium wp-image-3270" title="csvdatasetsp2" alt="" src="https://cdn.safe.com/wp-content/uploads/2013/06/csvdatasetsp2.png" width="334" height="126" /></a></p>
<p><a href="http://cdn.safe.com/wp-content/uploads/2012/03/thinbanner1.png"><img class="aligncenter size-full wp-image-2538" title="thinbanner1" alt="" src="https://cdn.safe.com/wp-content/uploads/2012/03/thinbanner1.png" width="500" height="6" /></a></p>
<p><strong>5) FeatureMerger</strong><br />
I love this update, and we have at least 7 cases that show users will agree.</p>
<p>This transformer is a way to merge or join data values and sometimes a join is made by multiple keys; for example if you are trying to match an address you might need to match: Number, Street, City. The new FeatureMerger lets you use all of those as a match. Previously you could only use one. The common workaround was to concatenate Number+Street+City into one and use that. Now you don’t need to.</p>
<p>As an additional bonus, the whole parameters dialog has gotten a nice redesign too:</p>
<p><a href="http://cdn.safe.com/wp-content/uploads/2013/06/featuremergersp2.png" target="_blank" rel="noopener noreferrer"><img class="alignnone size-medium wp-image-3257" title="featuremergersp2" alt="" src="https://cdn.safe.com/wp-content/uploads/2013/06/featuremergersp2-400x396.png" width="400" height="396" /></a></p>
<p><a href="http://cdn.safe.com/wp-content/uploads/2012/03/thinbanner1.png"><img class="aligncenter size-full wp-image-2538" title="thinbanner1" alt="" src="https://cdn.safe.com/wp-content/uploads/2012/03/thinbanner1.png" width="500" height="6" /></a></p>
<p><strong>4) AttributeCreator Updates</strong><br />
OK, this might not be something you&#8217;ll use all the time, but it will be fairly obvious in the AttributeCreator dialog, so you&#8217;ll need to be aware of this. In brief, we&#8217;ve added &#8220;multi-feature&#8221; functionality. This allows each feature to access attributes from prior/subsequent features in the workflow.</p>
<p><a href="http://cdn.safe.com/wp-content/uploads/2013/06/attrcreatorsp2.png" target="_blank" rel="noopener noreferrer"><img class="alignnone size-medium wp-image-3266" title="attrcreatorsp2" alt="" src="https://cdn.safe.com/wp-content/uploads/2013/06/attrcreatorsp2-400x336.png" width="400" height="336" /></a></p>
<p>See, in 2012 we added the ability to construct strings within our &#8220;<a href="http://evangelism.safe.com/fmeevangelist96/" target="_blank" rel="noopener noreferrer">Integrated GUI</a>&#8220;. That would look something like this:</p>
<p><a href="http://cdn.safe.com/wp-content/uploads/2012/01/fme2012release4.png" target="_blank" rel="noopener noreferrer"><img class="alignnone size-medium wp-image-2475" style="border: 1px solid black;" title="fme2012release4" alt="" src="https://cdn.safe.com/wp-content/uploads/2012/01/fme2012release4-400x107.png" width="400" height="107" /></a></p>
<p>So for any feature you could manipulate its attributes to construct a string or calculate a value. Now, in 2013-SP2, you can do the same thing, but using the attributes of <span style="text-decoration: underline;">other</span> features; ones that have already passed through the transformer or are yet to come.</p>
<p>For example, I have a spreadsheet that counts rainfall for a given location;</p>
<pre>Jan,47
Feb,85
Mar,128
Apr,178
May,229
etc</pre>
<p>You can see that these numbers are actually the cumulative value for the year. So, if I want to figure out the rainfall per month I must subtract the previous value from the current value, and I can do this very nicely now with the new AttributeCreator. Here I activate and set up the multi-feature functionality:</p>
<p><a href="http://cdn.safe.com/wp-content/uploads/2013/06/attrcreator1sp2.png" target="_blank" rel="noopener noreferrer"><img class="alignnone size-medium wp-image-3267" style="border: 1px solid black;" title="attrcreator1sp2" alt="" src="https://cdn.safe.com/wp-content/uploads/2013/06/attrcreator1sp2-400x117.png" width="400" height="117" /></a></p>
<p>Notice how I specify what to happen with a null value (that&#8217;s because the first record won&#8217;t have a prior value). Now I can set my actual mathematical expression:</p>
<p><a href="http://cdn.safe.com/wp-content/uploads/2013/06/attrcreator2sp2.png" target="_blank" rel="noopener noreferrer"><img class="alignnone size-medium wp-image-3268" title="attrcreator2sp2" alt="" src="https://cdn.safe.com/wp-content/uploads/2013/06/attrcreator2sp2-400x146.png" width="400" height="146" /></a></p>
<p>The actual expression is this:</p>
<pre>(@Value(feature[0].Cumulative Rainfall))-(@Value(feature[-1].Cumulative Rainfall))</pre>
<p>Notice how we have a sort of array here, so I am using feature (0) &#8211; feature (-1). I&#8217;m using the Arithmetic Editor dialog here (because this is a numeric calculation) but the same multi-feature functionality will work in the Text/String Editor as well. The result of my workspace is this:</p>
<p><a href="http://cdn.safe.com/wp-content/uploads/2013/06/attrcreator3sp2.png" target="_blank" rel="noopener noreferrer"><img class="alignnone size-medium wp-image-3269" title="attrcreator3sp2" alt="" src="https://cdn.safe.com/wp-content/uploads/2013/06/attrcreator3sp2.png" width="344" height="308" /></a></p>
<p>&#8230;which is just what I wanted.</p>
<p><a href="http://cdn.safe.com/wp-content/uploads/2012/03/thinbanner1.png"><img class="aligncenter size-full wp-image-2538" title="thinbanner1" alt="" src="https://cdn.safe.com/wp-content/uploads/2012/03/thinbanner1.png" width="500" height="6" /></a></p>
<p><strong>3) Dynamic</strong><br />
I think this is going to be BIG! I just won&#8217;t go into detail here because this isn&#8217;t that type of article. I&#8217;ll just say that dynamic schemas can now be <strong>very</strong> dynamic, as you can set them using incoming features.</p>
<p>So, instead of having to point a dynamic writer to an existing schema, you can create that schema dynamically within the workspace. You basically create a bunch of attributes to describe the schema. That gives you a lot of power there, and solves some scenarios I don&#8217;t think we could have supported before.</p>
<p>But what&#8217;s more, FME seems to create some of these schemas automatically. As an example, look at the output from the AttributePivoter I mentioned earlier:</p>
<p><a href="http://cdn.safe.com/wp-content/uploads/2013/06/dynamicschemasp2.png" target="_blank" rel="noopener noreferrer"><img class="alignnone size-medium wp-image-3259" title="dynamicschemasp2" alt="" src="https://cdn.safe.com/wp-content/uploads/2013/06/dynamicschemasp2-400x80.png" width="400" height="80" /></a></p>
<p>Can you see that a schema has been created? If you have a dynamic writer and send this data to it then the output will be in this schema. Of course, it makes sense here because the AttributePivoter will create data in a way that we are less likely to know the schema in advance; therefore this dynamic-ness is a great match for that transformer. But in future this may be applied to similar transformers too.</p>
<p>I look forward to seeing what other uses you FME&#8217;ers put this to! For more information check out FMEpedia. My colleague, Iris, is writing an article about this functionality and it should be there shortly (if it&#8217;s not already).</p>
<p><a href="http://cdn.safe.com/wp-content/uploads/2012/03/thinbanner1.png"><img class="aligncenter size-full wp-image-2538" title="thinbanner1" alt="" src="https://cdn.safe.com/wp-content/uploads/2012/03/thinbanner1.png" width="500" height="6" /></a></p>
<p><strong>2) Background Maps</strong><br />
Here&#8217;s one that&#8217;s more simple to explain: the Data Inspector now has the ability to show background maps. Simply choose Tools &gt; FME Options in the Data Inspector to find the settings for this:</p>
<p><a href="http://cdn.safe.com/wp-content/uploads/2013/06/backgroundmapssp2.png" target="_blank" rel="noopener noreferrer"><img class="alignnone size-medium wp-image-3258" title="backgroundmapssp2" alt="" src="https://cdn.safe.com/wp-content/uploads/2013/06/backgroundmapssp2-400x160.png" width="400" height="160" /></a></p>
<p>The maps can come from ArcGIS Online (needs an account of some sort) or Stamen Maps, which I believe is derived from OpenStreetMap data. The other possibility is to use an FME Format as the source of background data. For example, you could point to any set of raster data to be a backdrop, or you could use a vector dataset, or even an FME Custom Format!</p>
<p>The nice part is that FME handles any reprojection dynamically, so the data being inspected doesn&#8217;t need to be in the same coordinate system as the background data.</p>
<p><a href="http://cdn.safe.com/wp-content/uploads/2012/03/thinbanner1.png"><img class="aligncenter size-full wp-image-2538" title="thinbanner1" alt="" src="https://cdn.safe.com/wp-content/uploads/2012/03/thinbanner1.png" width="500" height="6" /></a></p>
<p><strong>1) Excel R/W</strong><br />
Excelsior! We now have a new Excel Reader and Writer, and it&#8217;s smooth. It&#8217;s like Barry White compared to the old Reader/Writer&#8217;s Green Day; that level of smooth!</p>
<p>Here&#8217;s the Parameters Dialog:</p>
<p><a href="http://cdn.safe.com/wp-content/uploads/2013/06/newexcelsp2.png" target="_blank" rel="noopener noreferrer"><img class="alignnone size-medium wp-image-3260" title="newexcelsp2" alt="" src="https://cdn.safe.com/wp-content/uploads/2013/06/newexcelsp2-400x393.png" width="400" height="393" /></a></p>
<p>Notice that you can now select which sheet(s) to read from the Excel file (top left). Also notice you can read a particular set of cells (top right) by specifying a range in the spreadsheet. Then there is the wonderful preview window and, finally, a representation of the schema for the sheet (bottom right).</p>
<p>In the schema dialog note that you can edit the field types to ensure FME interprets them correctly (sometimes it&#8217;s hard for FME to be sure whether a column is meant to be a string or a number) and there is also the option to set cells as being coordinates.</p>
<p>If you do this then the fields automatically get converted to geometry, without you having to use a 2DPointReplacer. <a href="https://twitter.com/donatsafe" target="_blank" rel="noopener noreferrer">Don</a> is really happy about this because it saves him a transformer in his demo workspaces! But just remember to set a coordinate system on any data you create this way, if you want it to appear with a background map in the Data Inspector.</p>
<p>The new Excel Writer is similarly advanced. It allows you to update cells, rather than just overwrite everything. In fact, there are five different writer modes:</p>
<p><a href="http://cdn.safe.com/wp-content/uploads/2013/06/newexcelwritesp2.png" target="_blank" rel="noopener noreferrer"><img class="alignnone size-medium wp-image-3262" title="newexcelwritesp2" alt="" src="https://cdn.safe.com/wp-content/uploads/2013/06/newexcelwritesp2-400x91.png" width="400" height="91" /></a></p>
<p>So you can choose to add data as a new row, or overwrite the existing rows. You can also update individual cells, delete cells, or even delete entire rows. Incidentally, this functionality you will find in the Feature Type properties dialog, under the Parameters tab.</p>
<p>I believe we support the fme_db_operation format attribute (the <em>where </em>has to be a row number, not a cell ID) and we also support &#8220;<a href="http://office.microsoft.com/en-ca/excel-help/define-and-use-names-in-formulas-HA010147120.aspx#BMquickly_name_a_cell_or_range_of_cells" target="_blank" rel="noopener noreferrer">named ranges</a>&#8221; in Excel (reading and writing). You may also set colours, fonts, fill, etc on the output with the writer.</p>
<p><a href="http://cdn.safe.com/wp-content/uploads/2013/06/newexcelwritecolorssp2.png" target="_blank" rel="noopener noreferrer"><img class="alignnone size-medium wp-image-3264" title="newexcelwritecolorssp2" alt="" src="https://cdn.safe.com/wp-content/uploads/2013/06/newexcelwritecolorssp2-400x300.png" width="400" height="300" /></a></p>
<p>Notice how you access these &#8211; through the actual attribute definitions. I imagine we do it like this because you wouldn&#8217;t want to set format attributes for every individual feature/cell. In this dialog you can set the format of a cell to be simple (e.g. red font, yellow fill) or can be more complex by using a custom definition. For example this custom string:</p>
<pre>[Green];[Red];[Magenta];[Blue]</pre>
<p>&#8230;means colour positive numbers green, negative numbers red, zero is magenta, and strings are blue. The syntax for these strings is defined by Excel (it&#8217;s not an FME construction) and you can find more information in the Excel Help system.</p>
<p><a href="http://cdn.safe.com/wp-content/uploads/2008/08/newbanner1.png"><img class="aligncenter size-full wp-image-351" title="newbanner1" alt="" src="https://cdn.safe.com/wp-content/uploads/2008/08/newbanner1.png" width="499" height="24" /></a></p>
<p>So, there we are. That&#8217;s FME2013-SP2. You can also see a movie showing the updates on our <a href="http://www.youtube.com/watch?v=OqM_Apu1G90" target="_blank" rel="noopener noreferrer">YouTube channel</a>. And &#8211; of course &#8211; when you want to download this new version you can get it from the <a href="http://www.safe.com/support/support-resources/fme-downloads/" target="_blank" rel="noopener noreferrer">Downloads Page</a> on our web site.</p>
<p>Regards,</p>
<p><a href="mailto:mark.ireland@safe.com" target="_blank" rel="noopener noreferrer"><img class="alignnone size-full wp-image-3058" title="sig2013" alt="" src="https://cdn.safe.com/wp-content/uploads/2013/02/sig2013.jpg" width="402" height="233" /></a></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Round Earth Data in Oracle, PostGIS, and SQL Server</title>
		<link>https://www.safe.com/blog/2012/08/round-earth-data-in-oracle-postgis-and-sql-server/</link>
					<comments>https://www.safe.com/blog/2012/08/round-earth-data-in-oracle-postgis-and-sql-server/#comments</comments>
		
		<dc:creator><![CDATA[Paul Nalos]]></dc:creator>
		<pubDate>Mon, 20 Aug 2012 14:00:59 +0000</pubDate>
				<guid isPermaLink="false">http://blog.safe.com/?p=4575</guid>

					<description><![CDATA[Today, most spatial databases know how to deal with a round earth. For example, they can tell you the distance between New York and London, or find the area within 1000 km of a point &#8212; tasks not normally possible with a flat map. So, I thought it would be interesting to explore a few [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Today, most spatial databases know how to deal with a round earth. For example, they can tell you the distance between New York and London, or find the area within 1000 km of a point &#8212; tasks not normally possible with a flat map. So, I thought it would be interesting to explore a few spatial operations with three of the major databases: SQL Server 2012, Oracle 11g R2, and PostGIS 2.0. (DB2 and Informix also have round-earth extensions, but I won&#8217;t cover them here.)</p>
<h3><em>I was focused on two questions:</em></h3>
<ol>
<li>Do they all produce essentially the same output? (This gives me confidence about their quality without having to independently determine the “right” answers.)</li>
<li>As <a href="http://blog.safe.com/2012/06/my-top-6-takeaways-from-sql-server-spatial-2012/">noted previously</a>, only SQL Server models round-earth curves. Is that a benefit?</li>
</ol>
<h2>Experiment 1:</h2>
<p><span style="font-size: medium;">How far is it from Vancouver, Canada to Tokyo, Japan?</span></p>
<p>I loaded a two-point round-earth line into each system and asked for its length. Here are the (uncontroversial) results:</p>
<table>
<tbody>
<tr>
<td width="100"></td>
<td width="100">Oracle</td>
<td width="200">7572654.086m</td>
</tr>
<tr>
<td></td>
<td>PostGIS</td>
<td>7572654.091m</td>
</tr>
<tr>
<td></td>
<td>SQL Server</td>
<td>7572658.675m</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<h2>Experiment 2:</h2>
<p><span style="font-size: medium;">What is the shortest path from Vancouver to Tokyo?</span></p>
<p>Here, I’m interested in getting a densified line which allows for (a) comparison and (b) visualization in round-earth-unaware applications.</p>
<p>This is trickier; in each system the round-earth spatial functions have evolved from flat-map ones, and it doesn’t make sense to densify a line on a flat map, so there isn’t a call to do it. My first attempt was to intersect the Vancouver-Tokyo line with a large number of north/south lines and plot the intersection points. This worked well for Oracle and SQL Server, but less so for PostGIS:</p>
<p><img class="aligncenter size-full wp-image-4586" title="Shortest Path - PostGIS Oracle SQL Server" alt="Shortest Path - PostGIS Oracle SQL Server" src="https://cdn.safe.com/wp-content/uploads/2012/08/Shortest-Path-PostGIS-Oracle-SQL-Server.png" width="561" height="282" /></p>
<p><center><em>Figure 1: Densifying the Vancouver -&gt; Tokyo line via intersections.</em></center>The issue? For many functions, including intersections and buffers, PostGIS uses a short-cut for round-earth calculations: It looks for a good flat-map coordinate system that covers the area of interest and uses that. There isn&#8217;t one big enough for this case, and so it falls back on World Mercator, with the results above.</p>
<p>Motivated to find an answer, I tried an approximation: Cover the earth with a grid at 1&#215;1 degree intervals, find the distance between each point and the line, keep the ones within 200 km, and buffer these together. This produced a consistent result:</p>
<p><img class="aligncenter size-full wp-image-4589" title="1x1 Degree Cells - PostGIS Oracle SQL Server" alt="1x1 Degree Cells - PostGIS Oracle SQL Server" src="https://cdn.safe.com/wp-content/uploads/2012/08/1x1-Degree-Cells-PostGIS-Oracle-SQL-Server.png" width="564" height="349" /></p>
<p><center><em>Figure 2: 1&#215;1 degree cells within 200km of the Vancouver -&gt; Tokyo line (PostGIS, blue) vs. Oracle / SQL Server result (red)</em></center></p>
<h2>Experiment 3:</h2>
<p><span style="font-size: medium;">What area is within 1 km of the shortest path from Vancouver to Tokyo?</span></p>
<p>I asked each database to buffer the line (from Experiments 1 and 2) by 1 km. Only SQL Server produced the correct result; both Oracle and PostGIS followed the path PostGIS took in Figure 1.</p>
<p>Further, if I used SQL Server’s BufferWithCurves() method, it was able to produce a compact result consisting of five arcs.</p>
<h2>Experiment 4:</h2>
<p><span style="font-size: medium;">What area is within 100 km of Vancouver’s airport?</span></p>
<p>I asked each database to buffer a point representing the airport by 10, 100, and 1000 km. The answers in each case were consistent and reasonable.</p>
<p>The majority of the differences between the three database’s answers came down to the density of the output (i.e., how many vertices made up the boundary). Oracle returned more vertices when the tolerance value was decreased (as expected), SQL Server appeared to ignore the tolerance value (unless I buffered as arcs, and then used CurveToLineWithTolerance), and PostGIS didn’t provide an option.</p>
<p><img class="aligncenter size-full wp-image-4590" title="100 km Buffer - PostGIS Oracle SQL Server" alt="100 km Buffer - PostGIS Oracle SQL Server" src="https://cdn.safe.com/wp-content/uploads/2012/08/100-km-Buffer-PostGIS-Oracle-SQL-Server.png" width="468" height="349" /></p>
<p><center><em>Figure 3: 100 km buffer from YVR; Oracle, SQL Server, and PostGIS produce similar results.</em></center><img class="aligncenter size-full wp-image-4591" title="Zoomed In Stroking - PostGIS Oracle SQL Server" alt="Zoomed In Stroking - PostGIS Oracle SQL Server" src="https://cdn.safe.com/wp-content/uploads/2012/08/Zoomed-In-Stroking-PostGIS-Oracle-SQL-Server.png" width="468" height="315" /></p>
<p><center><em>Figure 4: Zoomed in. PostGIS stroking not configurable (green, right). Here, I’ve set the SQL Server and Oracle arc stroking density very high (red/blue, left).</em></center>With the 100 km buffer, SQL Server’s result was about 4 m inside Oracle’s. With the 1000 km buffer, SQL Server’s result was consistently 4 km inside Oracle’s. Due to the low arc density (and presumably the buffering approximation discussed above), PostGIS’ results varied a bit more.</p>
<h2>Experiment 5:</h2>
<p><span style="font-size: medium;">Are there any surprises when using round-earth curves for small objects?</span></p>
<p>The previous examples demonstrate SQL Server’s ability to use round-earth arcs to represent large areas on the earth (e.g., 100 km around an airport, 1 km around a flight path). Given that SQL Server’s round-earth arc representation is new, it makes sense to ask if it behaves intuitively for small objects.</p>
<p>I digitized a cul-de-sac near the Safe Software office using three-point arcs. Then I wrote the resulting (curve) polygon to SQL Server. I also wrote a stroked version of the polygon (replacing the curved segments with shorter straight lines) to Oracle, PostGIS, and (again) SQL Server. To test that the curved polygon behaved similarly to its stroked equivalent, I asked each database for the polygon’s area:</p>
<table>
<tbody>
<tr>
<td width="100"></td>
<td width="300">Oracle (stroked polygon)</td>
<td width="100">1615.100 m2</td>
</tr>
<tr>
<td></td>
<td>PostGIS (stroked polygon)</td>
<td>1615.100 m2</td>
</tr>
<tr>
<td></td>
<td>SQL Server (curved polygon)</td>
<td>1614.938 m2</td>
</tr>
<tr>
<td></td>
<td>SQL Server (stroked polygon)</td>
<td>1615.100 m2</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p>This suggests curved data may be loaded into round-earth columns and processed normally.</p>
<h2>Conclusion</h2>
<p>Returning to my two opening questions:</p>
<h3><em>&gt; Do they all produce essentially the same output?</em></h3>
<p>&nbsp;</p>
<p>Yes. These databases generally return consistent results for round-earth queries. There are minor variations, and not everything works in all cases, so care is required.</p>
<h3><em>&gt; Only SQL Server models round-earth curves. Is that a benefit?</em></h3>
<p>&nbsp;</p>
<p>Yes. SQL Server’s round-earth curves allow geometry to be stored more compactly without loss of detail. Perhaps more importantly, curved data can be loaded into round-earth columns without degrading the data (i.e., by converting the curves into lines).</p>
<div style="height: 25px; clear: both;"></div>
<p>During this exercise, I noticed an error in my <a href="http://blog.safe.com/2012/06/my-top-6-takeaways-from-sql-server-spatial-2012/">previous post</a>. I had thought SQL Server had introduced the buffering-with-curves idea. Not so: For example, Oracle has had this ability for flat-map buffering for a very long time.</p>
<p>Spatial databases can efficiently and effectively store, query, and transform data, all while honoring the curvature of our round world. How are you taking advantage of these capabilities?</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.safe.com/blog/2012/08/round-earth-data-in-oracle-postgis-and-sql-server/feed/</wfw:commentRss>
			<slash:comments>8</slash:comments>
		
		
			</item>
	</channel>
</rss>
