<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4228793464107368822</id><updated>2011-12-02T10:07:00.014-05:00</updated><category term='GIS'/><category term='facebook'/><category term='computer bricka-brack'/><category term='Scuba'/><category term='math'/><category term='visualization'/><category term='research'/><category term='virus/malware'/><category term='tool'/><category term='Remote Sensing'/><category term='lol'/><category term='DIY'/><category term='efficiency'/><category term='SCUBA Diving'/><category term='imagery'/><category term='mobile tech'/><category term='art'/><category term='Java'/><category term='VB'/><category term='music production'/><category term='web site idea'/><category term='crafts'/><category term='essay'/><category term='data manipulation'/><category term='travel'/><category term='iphone'/><category term='hydrography/hydrology'/><category term='cartography'/><category term='ArcObjects'/><category term='projection'/><category term='coding'/><category term='geography'/><category term='app'/><category term='modeling'/><category term='statistics'/><category term='web-tech'/><category term='fail'/><category term='Diving'/><category term='Android'/><category term='vector'/><category term='symbology'/><category term='interpolation'/><category term='hardware'/><category term='customization'/><category term='Excel'/><title type='text'>Nerd tips for things you probably won't use</title><subtitle type='html'>A collection of the nerdiest things I happen to learn about</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://justinberke.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://justinberke.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Justin</name><uri>http://www.blogger.com/profile/13405139779467188945</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VJ2U8mMqPfU/SoSptGXK8iI/AAAAAAAABOQ/qRpz6nqiK7k/S220/pic.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>76</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4228793464107368822.post-3786456577955434413</id><published>2011-11-08T15:26:00.001-05:00</published><updated>2011-11-08T15:28:42.190-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Diving'/><category scheme='http://www.blogger.com/atom/ns#' term='DIY'/><category scheme='http://www.blogger.com/atom/ns#' term='hardware'/><category scheme='http://www.blogger.com/atom/ns#' term='Scuba'/><title type='text'>Changing a high pressure hose on a scuba regulator rig</title><content type='html'>There's really not much to switching out hoses on a scuba regulator rig, but there are a few differences between high pressure and low pressure hoses.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Low pressure hoses have a general working pressure of around 140 psi; much lower than the pressure contained in the cylinder.&amp;nbsp; The ends are almost as wide as the hose itself to allow gas to flow through it easily.&lt;/li&gt;&lt;/ul&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://cdn1.divegearexpress.com/media/regulators/diverite/HOLP-640.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="150" src="http://cdn1.divegearexpress.com/media/regulators/diverite/HOLP-640.jpg" width="200" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Wide hole of a low pressure hose&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;High pressure hoses have a working pressure that is equal to the compressed gas in the cylinder so a diver can constantly monitor how much compressed gas remains on a dive.&amp;nbsp; There is a very small hole on the end of the hose that connects to the first stage regulator.&amp;nbsp; In case of failure, a stream of gas at 3000 psi will be released, however it will only be in a tiny stream so it will take far longer to deplete the cylinder of all compressed gas.&lt;/li&gt;&lt;/ul&gt;&lt;i&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;Changing the hose&lt;/b&gt;:&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;To change a rig's high pressure hose that connects the submersible pressure gage (SPG), turn over the console (if applicable) and remove the plastic protector cover from the back of the rubber housing.&amp;nbsp; This will allow you to bend the rubber console and push the gage out of the unit.&lt;/li&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.xsscuba.com/graphics/gauges/gauge_combo_bk2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://www.xsscuba.com/graphics/gauges/gauge_combo_bk2.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Bend the rubber console while gently pushing on the back of the gage.&amp;nbsp;&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Use two wrenches to loosen the nut, then continue to unscrew the nut to remove the SPG from the hose. &lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&amp;nbsp;Back the old hose out of the rubber console. &lt;/li&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-1ZrN54jZOHw/TrmFeR9ldVI/AAAAAAAAB_4/8IFIt9Gsk3U/s1600/2011-11-07_18-28-27_318.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="137" src="http://4.bp.blogspot.com/-1ZrN54jZOHw/TrmFeR9ldVI/AAAAAAAAB_4/8IFIt9Gsk3U/s320/2011-11-07_18-28-27_318.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Now you will be left with the gage, the "swivel spool" which is the o-ring hardware that allows the gage/console to rotate at the end of the hose, and the high pressure hose itself.&amp;nbsp; The swivel spool will remain in either the SPG or the hose, so use pliers to gently remove the piece.&amp;nbsp; Do not let any dust, hair, etc. to stick to the lubricated piece.&lt;/li&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-fHNkzK9mwzE/TrmFe_BpFTI/AAAAAAAACAA/paQG3K47IAU/s1600/2011-11-07_18-32-00_584.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="132" src="http://2.bp.blogspot.com/-fHNkzK9mwzE/TrmFe_BpFTI/AAAAAAAACAA/paQG3K47IAU/s320/2011-11-07_18-32-00_584.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Feed the new hose through the console, replace the swivel spool in the SPG, then attach the SPG to the end of the high pressure hose and tighten.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Pull the hose back through the console and fit the gage snugly into place.&amp;nbsp; This may take a few minutes.&amp;nbsp; Do not use too much force or pull too hard on the hose.&amp;nbsp; A bit of wiggling should suffice.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;Read more&lt;/b&gt;:&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;a href="http://www.divegearexpress.com/regulators/hoses.shtml"&gt;http://www.divegearexpress.com/regulators/hoses.shtml&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4228793464107368822-3786456577955434413?l=justinberke.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://justinberke.blogspot.com/feeds/3786456577955434413/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4228793464107368822&amp;postID=3786456577955434413' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/3786456577955434413'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/3786456577955434413'/><link rel='alternate' type='text/html' href='http://justinberke.blogspot.com/2011/11/changing-high-pressure-hose-on-scuba.html' title='Changing a high pressure hose on a scuba regulator rig'/><author><name>Justin</name><uri>http://www.blogger.com/profile/13405139779467188945</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VJ2U8mMqPfU/SoSptGXK8iI/AAAAAAAABOQ/qRpz6nqiK7k/S220/pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-1ZrN54jZOHw/TrmFeR9ldVI/AAAAAAAAB_4/8IFIt9Gsk3U/s72-c/2011-11-07_18-28-27_318.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4228793464107368822.post-5671364027312196620</id><published>2011-08-12T20:15:00.005-04:00</published><updated>2011-08-16T10:55:41.898-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='app'/><category scheme='http://www.blogger.com/atom/ns#' term='tool'/><category scheme='http://www.blogger.com/atom/ns#' term='GIS'/><category scheme='http://www.blogger.com/atom/ns#' term='DIY'/><category scheme='http://www.blogger.com/atom/ns#' term='VB'/><category scheme='http://www.blogger.com/atom/ns#' term='customization'/><category scheme='http://www.blogger.com/atom/ns#' term='data manipulation'/><category scheme='http://www.blogger.com/atom/ns#' term='computer bricka-brack'/><category scheme='http://www.blogger.com/atom/ns#' term='ArcObjects'/><category scheme='http://www.blogger.com/atom/ns#' term='efficiency'/><category scheme='http://www.blogger.com/atom/ns#' term='coding'/><title type='text'>Connect to ArcMap layers and tables with VBA</title><content type='html'>&lt;b&gt;&lt;i&gt;&lt;span style="font-size: large;"&gt;Example description:&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;I am editing a coverage of stream segments (lines) and would like to log any updates to a non-spatial, standalone table in the geodatabase so I can keep track of the evolution of the dataset over time.&amp;nbsp; The application will first need to know which datasets to edit, so I start by adding&amp;nbsp; two combo boxes to the form that will be automatically populated with the two necessary types of data, named &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small;"&gt;cboFlowingWatersLayer&lt;/span&gt;, and &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small;"&gt;cboFlowingWatersUpdateTable&lt;/span&gt;, respectively.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-OfmLuUSXbhU/TkWEewCQlQI/AAAAAAAAB-U/-IWeuBA1bt4/s1600/03-Interface01.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-OfmLuUSXbhU/TkWEewCQlQI/AAAAAAAAB-U/-IWeuBA1bt4/s1600/03-Interface01.gif" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;The first combo box will allow me to select any of the the spatial datasets (geodatabase coverages/feature classes/shapefiles/projected datasets/etc.) that are available in the Table of Contents pane:&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-owm9g73MSvc/TkWB79kLPtI/AAAAAAAAB-M/ycJSv_O0SS0/s1600/01-TOCLayers.PNG" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-owm9g73MSvc/TkWB79kLPtI/AAAAAAAAB-M/ycJSv_O0SS0/s1600/01-TOCLayers.PNG" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Map layers in an active ArcMap project&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;The second combo box will select the non-spatial, standalone table (highlighted below) that is otherwise available under the Source tab in the Table of Contents pane.&amp;nbsp; There are two additional dummy tables that I added to this project that are not visible in the screenshot below, but you'll see them later.&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-I59tmLv7BGI/TkWB8OsORjI/AAAAAAAAB-Q/RxM5PKMegJ0/s1600/02-TOCTables.PNG" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-I59tmLv7BGI/TkWB8OsORjI/AAAAAAAAB-Q/RxM5PKMegJ0/s1600/02-TOCTables.PNG" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Non-spatial tables in an ArcMap project&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="font-size: large;"&gt;Coding:&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;I add some code to populate the combo boxes with any available layers or standalone tables when the form activates.&amp;nbsp; There's a brief Setup section, then an If/Then statement will check to see if there is a layer already set in there.&amp;nbsp; If not, it'll clear it and populate the control with any spatial layers that are available.&amp;nbsp; If there is anything in there, it will run a separate function to check if it's the right layer.&amp;nbsp; I won't address that procedure here, so it's commented out below (though I recommend adding such a function). Let's get started with filling in the names of just the spatial datasets first:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;span style="color: blue;"&gt;Private Sub &lt;/span&gt;UserForm_Activeate()&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;span style="color: green;"&gt;'Setup&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp; &lt;span style="color: blue;"&gt;Dim &lt;/span&gt;pMxDoc &lt;span style="color: blue;"&gt;As &lt;/span&gt;IMxDocument&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp; &lt;/code&gt;&lt;code&gt;&lt;span style="color: blue;"&gt;Dim &lt;/span&gt;&lt;/code&gt;&lt;code&gt;pMap &lt;/code&gt;&lt;code&gt;&lt;span style="color: blue;"&gt;As &lt;/span&gt;&lt;/code&gt;&lt;code&gt;IMap&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp; &lt;span style="color: blue;"&gt;Set &lt;/span&gt;pMxDoc = ThisDocument&lt;br /&gt;&amp;nbsp; &lt;/code&gt;&lt;code&gt;&lt;span style="color: blue;"&gt;Set &lt;/span&gt;&lt;/code&gt;&lt;code&gt;pMap = pMxDoc.FocusMap&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;span style="color: green;"&gt;'Populate the first combo box with any available spatial&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;span style="color: green;"&gt;' layers that will show up in the Display tab in the&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;span style="color: green;"&gt;' ArcMap Table of Contents pane&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp; &lt;/code&gt;&lt;code&gt;&lt;span style="color: blue;"&gt;Dim &lt;/span&gt;&lt;/code&gt;&lt;code&gt;i &lt;/code&gt;&lt;code&gt;&lt;span style="color: blue;"&gt;As &lt;/span&gt;&lt;/code&gt;&lt;code&gt;Integer&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp; If cboFlowingWatersLayer.ListCount = 0 Then&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; cboFlowingWatersLayer.Clear&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; For i = 0 To pMap.LayerCount - 1&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Me.cboFlowingWatersLayer.Additem (pMap.Layer(i).Name)&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Next i&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp; Else&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green;"&gt;'Call Me.FlowingWatersLayerCheck&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp; End If&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;span style="color: blue;"&gt;End Sub&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;What should appear when the first combo box is selected are any layers that are available the Display tab of an ArcMap project.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-shRT-u1GutQ/TkWLdKjZPVI/AAAAAAAAB-Y/attvr-rTAP4/s1600/03-Interface02_Layers.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-shRT-u1GutQ/TkWLdKjZPVI/AAAAAAAAB-Y/attvr-rTAP4/s1600/03-Interface02_Layers.gif" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;span style="font-size: x-small;"&gt;&lt;i&gt;(Note that apps can only work with shapefiles, geodatabase coverages, etc. and not &lt;/i&gt;&lt;i&gt;groups of data.&amp;nbsp; Data groups appear in this example as individual layers, but since they are not really spatial datasets, selecting them will cause an error at run time if they are selected and processed.)&lt;/i&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;Next we'll add some more code to add any standalone tables that are in the project using the IStandaloneTableCollection interface:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;span style="color: blue;"&gt;Private Sub &lt;/span&gt;UserForm_Activeate()&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;span style="color: green;"&gt;'Setup&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp; &lt;span style="color: blue;"&gt;Dim &lt;/span&gt;pMxDoc &lt;span style="color: blue;"&gt;As &lt;/span&gt;IMxDocument&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp; &lt;/code&gt;&lt;code&gt;&lt;span style="color: blue;"&gt;Dim &lt;/span&gt;&lt;/code&gt;&lt;code&gt;pMap &lt;/code&gt;&lt;code&gt;&lt;span style="color: blue;"&gt;As &lt;/span&gt;&lt;/code&gt;&lt;code&gt;IMap&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp; &lt;/code&gt;&lt;code style="background-color: yellow;"&gt;&lt;span style="color: blue;"&gt;Dim &lt;/span&gt;&lt;/code&gt;&lt;code style="background-color: yellow;"&gt;pSATCollection &lt;/code&gt;&lt;code style="background-color: yellow;"&gt;&lt;span style="color: blue;"&gt;As &lt;/span&gt;&lt;/code&gt;&lt;code style="background-color: yellow;"&gt;IStandaloneTableCollection&lt;/code&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp; &lt;span style="color: blue;"&gt;Set &lt;/span&gt;pMxDoc = ThisDocument&lt;br /&gt;&amp;nbsp; &lt;/code&gt;&lt;code&gt;&lt;span style="color: blue;"&gt;Set &lt;/span&gt;&lt;/code&gt;&lt;code&gt;pMap = pMxDoc.FocusMap&lt;br /&gt;&amp;nbsp; &lt;/code&gt;&lt;code style="background-color: yellow;"&gt;&lt;span style="color: blue;"&gt;Set &lt;/span&gt;&lt;/code&gt;&lt;code style="background-color: yellow;"&gt;pSATCollection = pMxDocument.FocusMap&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;span style="color: green;"&gt;'Populate the first combo box with any available spatial&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;span style="color: green;"&gt;' layers that will show up in the Display tab in the&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;span style="color: green;"&gt;' ArcMap Table of Contents pane&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp; &lt;/code&gt;&lt;code&gt;&lt;span style="color: blue;"&gt;Dim &lt;/span&gt;&lt;/code&gt;&lt;code&gt;i &lt;/code&gt;&lt;code&gt;&lt;span style="color: blue;"&gt;As &lt;/span&gt;&lt;/code&gt;&lt;code&gt;Integer&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp; If cboFlowingWatersLayer.ListCount = 0 Then&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; cboFlowingWatersLayer.Clear&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; For i = 0 To pMap.LayerCount - 1&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Me.cboFlowingWatersLayer.Additem (pMap.Layer(i).Name)&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Next i&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp; Else&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green;"&gt;'Call Me.FlowingWatersLayerCheck&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp; End If&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="background-color: yellow;"&gt;&lt;code&gt;&lt;span style="color: green;"&gt;'Populate the second combo box with any available non-spatial&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;div style="background-color: yellow;"&gt;&lt;code&gt;&lt;span style="color: green;"&gt;' tables that will show up in the Source tab in the&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;div style="background-color: yellow;"&gt;&lt;code&gt;&lt;span style="color: green;"&gt;' ArcMap Table of Contents pane&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;div style="background-color: yellow;"&gt;&lt;code&gt;&amp;nbsp; &lt;/code&gt;&lt;code&gt;&lt;span style="color: blue;"&gt;Dim &lt;/span&gt;&lt;/code&gt;&lt;code&gt;j &lt;/code&gt;&lt;code&gt;&lt;span style="color: blue;"&gt;As &lt;/span&gt;&lt;/code&gt;&lt;code&gt;Integer&lt;/code&gt;&lt;/div&gt;&lt;div style="background-color: yellow;"&gt;&lt;code&gt;&amp;nbsp; If cboFlowingWatersUpdateTable.ListCount = 0 Then&lt;/code&gt;&lt;/div&gt;&lt;div style="background-color: yellow;"&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;/code&gt;&lt;code&gt;cboFlowingWatersUpdateTable&lt;/code&gt;&lt;code&gt;.Clear&lt;/code&gt;&lt;/div&gt;&lt;div style="background-color: yellow;"&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; For j = 0 To pSATCollection.StandaloneTableCount - 1&lt;/code&gt;&lt;/div&gt;&lt;div style="background-color: yellow;"&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Me.&lt;/code&gt;&lt;code&gt;cboFlowingWatersUpdateTable&lt;/code&gt;&lt;code&gt;.Additem _&lt;/code&gt;&lt;/div&gt;&lt;div style="background-color: yellow;"&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (pSATCollection.StandaloneTable(j).Name)&lt;/code&gt;&lt;/div&gt;&lt;div style="background-color: yellow;"&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Next j&lt;/code&gt;&lt;/div&gt;&lt;div style="background-color: yellow;"&gt;&lt;code&gt;&amp;nbsp; Else&lt;/code&gt;&lt;/div&gt;&lt;div style="background-color: yellow;"&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: green;"&gt;'Call Me.FlowingWatersTableCheck&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;div style="background-color: yellow;"&gt;&lt;code&gt;&amp;nbsp; End If &lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;code&gt;&lt;span style="color: blue;"&gt;End Sub&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Finally, this is what the second combo box will look like (with the additional two dummy datasets that were hidden from view in the screenshot above - they're named "Delete - Test 1" and "Delete - Test 2"): &lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-XC7g2pV9vDU/TkWP0E2H6KI/AAAAAAAAB-c/G93YzTmXeJk/s1600/03-Interface03_Tables.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-XC7g2pV9vDU/TkWP0E2H6KI/AAAAAAAAB-c/G93YzTmXeJk/s1600/03-Interface03_Tables.gif" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;i&gt;Referencing the selected layer/table:&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;There are a virtually unlimited number of uses for mapping layers like this.&amp;nbsp; The idea is that the method above provides a heads-up interface to access the &lt;i&gt;&lt;b&gt;position&lt;/b&gt;&lt;/i&gt; of a given layer or table in the Table of Contents.&amp;nbsp; Think of the position as the dataset's number in line, starting at 0 instead of 1.&amp;nbsp; Take the five spatial "layers" that are available for example:&lt;br /&gt;&lt;br /&gt;&lt;table align="center" border="1" cellpadding="2" cellspacing="0" colspan="3"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td bgcolor="#c2dcff" style="font-family: Verdana,sans-serif; text-align: center;"&gt;&lt;b&gt;&lt;span style="font-size: x-small;"&gt;Place in line&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;&lt;td bgcolor="#c2dcff" style="font-family: Verdana,sans-serif; text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;VB Position #&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;&lt;td bgcolor="#c2dcff" style="font-family: Verdana,sans-serif; text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;Layer Name&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td bgcolor="white" style="font-family: Verdana,sans-serif; text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;1st / Top&lt;br /&gt;2nd&lt;br /&gt;3rd&lt;br /&gt;4th&lt;br /&gt;5th / Bottom&lt;/span&gt;&lt;/td&gt;&lt;td bgcolor="white" style="font-family: Verdana,sans-serif; text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;0&lt;br /&gt;1&lt;br /&gt;2&lt;br /&gt;3&lt;br /&gt;4&lt;/span&gt;&lt;/td&gt;&lt;td bgcolor="white" style="text-align: center;"&gt;&lt;span style="font-family: Verdana,sans-serif; font-size: x-small;"&gt;"FlowingWaters layer"&lt;br /&gt;"New Group Layer"&lt;br /&gt;"Florida NHD"&lt;br /&gt;"SWFWMD_draft_primary_canals"&lt;br /&gt;"Reporting Units"&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Whenever you need to use a specific layer, the interface we built above will allow a quick way for Visual Basic to reference the position number of a selected layer.&amp;nbsp; Of course you will need some error checking and handling code to ensure that the layer position isn't changed (adding, removing, or moving the order of layers in the Table of Contents will affect each layer's position number).&lt;br /&gt;&lt;br /&gt;The following are a few examples on how to reference a layer's position number using the interface that we built above.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="font-size: large;"&gt;Example 1 - Connect to a dataset:&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;A working example follows, so don't worry about the function of the code yet.&amp;nbsp; This simply illustrates the structure of references needed to connect to a dataset.&lt;br /&gt;&lt;br /&gt;The previous sections explain that an ArcMap project is made of up layers and sometimes non-spatial tables.&amp;nbsp; Further, those layers and tables have position numbers associated with them that are usually just unimportant background information.&amp;nbsp; Well, now we will use those position numbers to tell a program where to target its procedures.&lt;br /&gt;&lt;br /&gt;After we choose a layer from the program interface, that combo box/pull down menu will store our selection as a number, which it refers to as its ListIndex.&amp;nbsp; Now if we want to know which layer or table we chose, we'll call it by referencing &lt;span style="font-size: small;"&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;cboFlowingWatersLayer.ListIndex&lt;/span&gt;&lt;/b&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In the example below, we are instantiating a new variable based off of the IFeatureLayer interface (again, don't worry about what's happening yet).&amp;nbsp; We will set that new variable, named &lt;span style="font-size: small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;pFeatureLayer&lt;/span&gt;&lt;/span&gt;, equal to a specific layer number (position number) in an ArcMap project so we can do some more work on it later.&amp;nbsp; Just pay attention to the &lt;i&gt;way &lt;/i&gt;that the &lt;u&gt;combo box position&lt;/u&gt; is referenced:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;span style="color: blue;"&gt;Dim &lt;/span&gt;pMxDoc &lt;span style="color: blue;"&gt;As &lt;/span&gt;IMxDocument &lt;span style="color: green;"&gt;'Whatever&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;span style="color: blue;"&gt;Dim &lt;/span&gt;pFeatureLayer &lt;/code&gt;&lt;code&gt;&lt;span style="color: blue;"&gt;As &lt;/span&gt;&lt;/code&gt;&lt;code&gt;IFeatureClass &lt;/code&gt;&lt;code&gt;&lt;span style="color: green;"&gt;'Slightly Important&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;span style="color: green;"&gt;'.&lt;/span&gt;&lt;/code&gt;&lt;code&gt;&lt;span style="color: green;"&gt;..more code&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;span style="color: blue;"&gt;Set &lt;/span&gt;pMxDoc = ThisDocument &lt;/code&gt;&lt;code&gt;&lt;span style="color: green;"&gt;'Still not the point&lt;/span&gt;&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;span style="color: green;"&gt;'Oh, here we go!&lt;/span&gt;&lt;/code&gt;&lt;code&gt;&lt;span style="color: blue;"&gt; &lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;span style="color: blue;"&gt;Set &lt;/span&gt;&lt;/code&gt;&lt;code&gt;pFeatureLayer = _ &lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp; &lt;span style="background-color: yellow;"&gt;pMxDoc.FocusMap.Layer(&lt;/span&gt;&lt;u style="background-color: yellow;"&gt;cboFlowingWatersLayer.ListIndex&lt;/u&gt;&lt;span style="background-color: yellow;"&gt;)&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;span style="color: green;"&gt;'.&lt;/span&gt;&lt;/code&gt;&lt;code&gt;&lt;span style="color: green;"&gt;..more code&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Ok! This essentially told the function/sub routine that:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;We're working with this project (aka &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;ThisDocument&lt;/span&gt;)&lt;/li&gt;&lt;li&gt;We're looking for a specific feature layer (spatial dataset/shapefile/geodatabase coverage/etc.)&lt;/li&gt;&lt;li&gt;That dataset of interest will be in a certain position when you focus the map; and that position number can be found by A) looking at the combo box (pull down menu named &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;cboFlowingWatersLayer&lt;/span&gt;) and B) pulling its current &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;ListIndex&lt;/span&gt; value.&lt;/li&gt;&lt;/ol&gt;Got it.&amp;nbsp; Let's move on to a working example.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="font-size: large;"&gt;Example 2 - Count the selected spatial features: &lt;/span&gt;&lt;/i&gt;&lt;br /&gt;Add two command buttons to the form, named &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;cboLayerCount &lt;/span&gt;&amp;amp; &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;cboTableCount&lt;/span&gt;, and change their captions to match the screenshot below&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-0xEPyad3O-s/TkWsZnJLzXI/AAAAAAAAB-g/Qqp9TX9dwN8/s1600/04-Interface_Count01.gif" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-0xEPyad3O-s/TkWsZnJLzXI/AAAAAAAAB-g/Qqp9TX9dwN8/s1600/04-Interface_Count01.gif" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Added two command buttons&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;When a user clicks on one of these buttons, a message box will report how many records are selected in a layer or a table.&amp;nbsp; I'll add a quick error check at the beginning to make sure that a layer has been selected.&amp;nbsp; If a layer has not been selected yet, the &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;ListIndex &lt;/span&gt;value will be -1. Here's the code:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;span style="color: blue;"&gt;Private Sub &lt;/span&gt;cmdLayerCount_Click()&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;span style="color: green;"&gt;'Error Checking&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;span style="color: blue;"&gt;&lt;/span&gt;&amp;nbsp; &lt;span style="color: blue;"&gt;If&lt;/span&gt; cboFlowingWatersLayer.ListIndex = -1 &lt;span style="color: blue;"&gt;Then&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MsgBox "Please choose a layer to count."&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;Exit Sub&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp; &lt;span style="color: green;"&gt;End If&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;span style="color: green;"&gt;'Setup&lt;/span&gt;&lt;/code&gt;&lt;code&gt;&lt;span style="color: green;"&gt; &lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp; &lt;span style="color: blue;"&gt;Dim &lt;/span&gt;pMxDoc &lt;span style="color: blue;"&gt;As &lt;/span&gt;IMxDocument&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp; &lt;/code&gt;&lt;code&gt;&lt;span style="color: blue;"&gt;Dim &lt;/span&gt;&lt;/code&gt;&lt;code&gt;pMap &lt;/code&gt;&lt;code&gt;&lt;span style="color: blue;"&gt;As &lt;/span&gt;&lt;/code&gt;&lt;code&gt;IMap&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp; &lt;/code&gt;&lt;code&gt;&lt;span style="color: blue;"&gt;Dim &lt;/span&gt;&lt;/code&gt;&lt;code&gt;pFS &lt;/code&gt;&lt;code&gt;&lt;span style="color: blue;"&gt;As &lt;/span&gt;&lt;/code&gt;&lt;code&gt;IFeatureSelection &lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp; &lt;/code&gt;&lt;code&gt;&lt;span style="color: blue;"&gt;Dim &lt;/span&gt;&lt;/code&gt;&lt;code&gt;pSelectedFeatures &lt;/code&gt;&lt;code&gt;&lt;span style="color: blue;"&gt;As &lt;/span&gt;&lt;/code&gt;&lt;code&gt;ISelectionSet&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp; &lt;span style="color: blue;"&gt;Set &lt;/span&gt;pMxDoc = ThisDocument&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp; &lt;/code&gt;&lt;code&gt;&lt;span style="color: blue;"&gt;Set &lt;/span&gt;&lt;/code&gt;&lt;code&gt;pMap = pMxDoc.FocusMap&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp; &lt;/code&gt;&lt;code&gt;&lt;span style="color: blue;"&gt;Set &lt;/span&gt;&lt;/code&gt;&lt;code&gt;pFS = pMap.Layer(cboFlowingWatersLayer.ListIndex)&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp; &lt;/code&gt;&lt;code&gt;&lt;span style="color: blue;"&gt;Set &lt;/span&gt;&lt;/code&gt;&lt;code&gt;pSelectedFeatures = pFS.SelectionSet&lt;span style="color: green;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;span style="color: green;"&gt;'Display a message box to report info &lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;div style="background-color: yellow;"&gt;&lt;code&gt;&amp;nbsp; &lt;span style="color: blue;"&gt;If &lt;/span&gt;pSelectedFeatures.Count = 1 &lt;span style="color: blue;"&gt;Then&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;div style="background-color: yellow;"&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MsgBox "There is 1 feature selected."&lt;/code&gt;&lt;/div&gt;&lt;div style="background-color: yellow;"&gt;&lt;code&gt;&amp;nbsp; &lt;span style="color: blue;"&gt;Else&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;div style="background-color: yellow;"&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MsgBox "There are " &amp;amp; pSelectedFeatures.Count &amp;amp; _&lt;/code&gt;&lt;/div&gt;&lt;div style="background-color: yellow;"&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; " features selected."&lt;/code&gt;&lt;/div&gt;&lt;div style="background-color: yellow;"&gt;&lt;code&gt;&amp;nbsp; &lt;span style="color: blue;"&gt;End If&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="color: blue;"&gt;&lt;code&gt;End Sub&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;Save this, run the code, select a few features and you should get something like this:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-NJHhB3Esu_s/TkW1JxW2SxI/AAAAAAAAB-k/p5K36ZPLh70/s1600/04-Interface_Count02.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-NJHhB3Esu_s/TkW1JxW2SxI/AAAAAAAAB-k/p5K36ZPLh70/s1600/04-Interface_Count02.gif" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;i&gt;Example 3 - Count the selected standalone table features&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;Using the same GUI (graphic user interface) that was built in the previous example, apply the following code to the "Table Count" command button to count the number of selected records in a standalone table.&amp;nbsp; A very similar method will be used for this procedure, however we will need to use the &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;ITableSelection&lt;/span&gt; inteface in place of the &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;IFeatureSelection&lt;/span&gt; interface since we're working with a standalone table instead of a spatial dataset.&amp;nbsp; Further, I won't need to sort through any of the selected features in the standalone table in my larger project, so I'll leave out the Selection Set and count directly from my Table Selection:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;span style="color: blue;"&gt;Private Sub &lt;/span&gt;cmdTableCount_Click()&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;span style="color: green;"&gt;'Error Checking&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp; &lt;span style="color: blue;"&gt;If&lt;/span&gt; cboFlowingWatersUpdateTable.ListIndex = -1 &lt;span style="color: blue;"&gt;Then&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MsgBox "Please choose a layer to count."&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;Exit Sub&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp; &lt;span style="color: green;"&gt;End If&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;span style="color: green;"&gt;'Setup&lt;/span&gt;&lt;/code&gt;&lt;code&gt;&lt;span style="color: green;"&gt; &lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp; &lt;span style="color: blue;"&gt;Dim &lt;/span&gt;pMxDoc &lt;span style="color: blue;"&gt;As &lt;/span&gt;IMxDocument&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp; &lt;/code&gt;&lt;code&gt;&lt;span style="color: blue;"&gt;Dim &lt;/span&gt;&lt;/code&gt;&lt;code&gt;pSATCollection &lt;/code&gt;&lt;code&gt;&lt;span style="color: blue;"&gt;As &lt;/span&gt;&lt;/code&gt;&lt;code style="background-color: yellow;"&gt;IStandAloneTableCollection&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp; &lt;/code&gt;&lt;code&gt;&lt;span style="color: blue;"&gt;Dim &lt;/span&gt;&lt;/code&gt;&lt;code&gt;p&lt;span style="background-color: yellow;"&gt;T&lt;/span&gt;S &lt;/code&gt;&lt;code&gt;&lt;span style="color: blue;"&gt;As &lt;/span&gt;&lt;/code&gt;&lt;code&gt;I&lt;span style="background-color: yellow;"&gt;Table&lt;/span&gt;Selection&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp; &lt;span style="color: blue;"&gt;Set &lt;/span&gt;pMxDoc = ThisDocument&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp; &lt;/code&gt;&lt;code&gt;&lt;span style="color: blue;"&gt;Set &lt;/span&gt;&lt;/code&gt;&lt;code&gt;&lt;span style="background-color: yellow;"&gt;pSATCollection&lt;/span&gt; = pMxDoc.FocusMap&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;span style="color: green;"&gt;'Th&lt;/span&gt;&lt;/code&gt;&lt;code&gt;&lt;span style="color: green;"&gt;is next bit must be on the a single line;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;span style="color: green;"&gt;'&amp;nbsp; the format of this blog makes coding difficult.&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp; &lt;/code&gt;&lt;code&gt;&lt;span style="color: blue;"&gt;Set &lt;/span&gt;&lt;/code&gt;&lt;code&gt;pTS = pSATCollection.StandaloneTable(&lt;/code&gt;&lt;br /&gt;&lt;code style="white-space: nowrap;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt;cboFlowingWatersUpdateTable.ListIndex)&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;span style="color: green;"&gt;'Display a message box to report info &lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp; &lt;span style="color: blue;"&gt;If &lt;/span&gt;&lt;span style="background-color: yellow;"&gt;pTS.SelectionSet.Count&lt;/span&gt; = 1 &lt;span style="color: blue;"&gt;Then&lt;/span&gt;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MsgBox "There is 1 feature selected."&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp; &lt;span style="color: blue;"&gt;Else&lt;/span&gt;&amp;nbsp;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MsgBox "There are " &amp;amp; &lt;span style="background-color: yellow;"&gt;pTS.SelectionSet.Count&lt;/span&gt; &amp;amp; _&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; " features selected."&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp; &lt;span style="color: blue;"&gt;End If&lt;/span&gt;&lt;/code&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;div style="color: blue;"&gt;&lt;code&gt;End Sub&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;Now, after you map a standalone table in the Flowing Waters Update Table combo box and click the Table Count command button, you will be able to count any selected records in the table, just like you would count the records in a spatial layer.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-Nouesxdq4Lo/TkqDniNWJMI/AAAAAAAAB-0/lgEaeKgCC5I/s1600/04-Interface_Count03.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-Nouesxdq4Lo/TkqDniNWJMI/AAAAAAAAB-0/lgEaeKgCC5I/s1600/04-Interface_Count03.gif" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4228793464107368822-5671364027312196620?l=justinberke.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://justinberke.blogspot.com/feeds/5671364027312196620/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4228793464107368822&amp;postID=5671364027312196620' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/5671364027312196620'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/5671364027312196620'/><link rel='alternate' type='text/html' href='http://justinberke.blogspot.com/2011/08/connect-to-arcmap-layers-and-tables.html' title='Connect to ArcMap layers and tables with VBA'/><author><name>Justin</name><uri>http://www.blogger.com/profile/13405139779467188945</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VJ2U8mMqPfU/SoSptGXK8iI/AAAAAAAABOQ/qRpz6nqiK7k/S220/pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-OfmLuUSXbhU/TkWEewCQlQI/AAAAAAAAB-U/-IWeuBA1bt4/s72-c/03-Interface01.gif' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4228793464107368822.post-6887904087574862069</id><published>2011-06-24T16:18:00.000-04:00</published><updated>2011-06-24T16:18:40.084-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tool'/><category scheme='http://www.blogger.com/atom/ns#' term='DIY'/><category scheme='http://www.blogger.com/atom/ns#' term='Excel'/><category scheme='http://www.blogger.com/atom/ns#' term='customization'/><category scheme='http://www.blogger.com/atom/ns#' term='data manipulation'/><category scheme='http://www.blogger.com/atom/ns#' term='computer bricka-brack'/><category scheme='http://www.blogger.com/atom/ns#' term='efficiency'/><title type='text'>PivotTables Example: Reducing Multiple Records for One Site</title><content type='html'>&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-0k_drT0nR0o/TgS-lbWHDbI/AAAAAAAAB3c/JM_VkrXNYU0/s1600/PivotTables01.gif" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="205" src="http://1.bp.blogspot.com/-0k_drT0nR0o/TgS-lbWHDbI/AAAAAAAAB3c/JM_VkrXNYU0/s400/PivotTables01.gif" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Click to enlarge: Example dataset and completed PivotTable&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;There is a dataset that has unique records for various pollutants for a number of locations across the state.&amp;nbsp; Thus, there are multiple instances of the same station for each of the four pollutants in this abbreviated example: CO, NO&lt;sub&gt;x&lt;/sub&gt;, PB, and PM (etc.).&amp;nbsp; I gave each of these records imitation data in the Value_ppm field to illustrate how the data are moved after being manipulated by the PivotTable process.&amp;nbsp; The values for the first station group are 1.x, the second group are 2.x, etc.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;span style="font-size: large;"&gt;&lt;i&gt;&lt;b&gt;Process&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;/u&gt;&lt;span style="font-size: large;"&gt;&lt;i&gt;&lt;b&gt;:&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Open a dataset in Excel (2007) - though this is largely available in previous versions of Excel.&lt;/li&gt;&lt;li&gt;From the Insert tab choose Pivot Table&lt;/li&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-rSbMi5JoH3E/TgS-mV3ZT1I/AAAAAAAAB3g/mM0eI67ff_k/s1600/PivotTables02.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-rSbMi5JoH3E/TgS-mV3ZT1I/AAAAAAAAB3g/mM0eI67ff_k/s1600/PivotTables02.gif" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt; &lt;/div&gt;&lt;ul&gt;&lt;li&gt;From the Create PivotTable dialog, select all of your important data (including field headings), and choose to place the new table in a New Worksheet&lt;br /&gt; &lt;/li&gt;&lt;li&gt;From the PivotTable wizard that will likely appear docked to the right side of the Excel window, click the menu button at the top and choose "Fields Selection and Areas Stacked" option&lt;/li&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-XGlTxv_5Dyc/TgS-msEAglI/AAAAAAAAB3k/m_Hfv7xut7U/s1600/PivotTables03.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-XGlTxv_5Dyc/TgS-msEAglI/AAAAAAAAB3k/m_Hfv7xut7U/s1600/PivotTables03.gif" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Select the fields you wish to be included in your final dataset.&amp;nbsp; I picked all three from my dummy dataset&lt;/li&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-aDEYFZYeZCc/TgS-nF2J6qI/AAAAAAAAB3o/DobGOrTGATg/s1600/PivotTables04.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-aDEYFZYeZCc/TgS-nF2J6qI/AAAAAAAAB3o/DobGOrTGATg/s1600/PivotTables04.gif" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt; &lt;/div&gt;&lt;ul&gt;&lt;li&gt;Select the menu button again at the top of the PivotTable wizard and choose “Areas Section Only (1 by 4)”&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Now drag the fields into the following order:&lt;br /&gt;- Row Lables: Station (or station name/id)&lt;br /&gt;- Column Labels: Pollutant&lt;br /&gt;- Values: Sum of Value_PPM&lt;/li&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-B3HnubYfSWY/TgS-nasalyI/AAAAAAAAB3s/MrWd8aLKLbQ/s1600/PivotTables05.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://4.bp.blogspot.com/-B3HnubYfSWY/TgS-nasalyI/AAAAAAAAB3s/MrWd8aLKLbQ/s400/PivotTables05.gif" width="240" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt; &lt;/div&gt;&lt;ul&gt;&lt;li&gt;Remove the "Grand Total" fields by right clicking on the new table and choosing PivotTable Options&lt;/li&gt;&lt;li&gt;From the Totals &amp;amp; Filters tab, uncheck the first two boxes under Grand Totals and click OK&lt;/li&gt;&lt;/ul&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-b1rKGbLAQ5s/TgTbcQFa7iI/AAAAAAAAB3w/qly-26CIaLI/s1600/PivotTables06.gif" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="116" src="http://3.bp.blogspot.com/-b1rKGbLAQ5s/TgTbcQFa7iI/AAAAAAAAB3w/qly-26CIaLI/s320/PivotTables06.gif" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Final Table&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;ul&gt;&lt;li&gt;&amp;nbsp;Finally, Copy and Paste the raw field headings and data to a new, final worksheet.&amp;nbsp; From here, if you are dealing with spatial data, I suggest joining Lat/Long/Datum information to the Station in Access or ArcMap/Catalog&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size: large;"&gt;&lt;u&gt;&lt;i&gt;&lt;b&gt;Additional Grouping Fields&lt;/b&gt;&lt;/i&gt;&lt;/u&gt;&lt;i&gt;&lt;b&gt;:&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;Your dataset will be a bit more difficult if you need to attach additional information included as a grouping parameter, such as an observation date.&amp;nbsp; You can start by adding the Date column (switch back to the “Fields Selection and Areas Stacked” view) to the Row Labels area of the Pivot Table wizard.&amp;nbsp; Make sure Date is first, followed by Station.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-6PyZ3cFgPcs/TgTbc5dToSI/AAAAAAAAB30/6j6FsyeDjR8/s1600/PivotTables07.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://2.bp.blogspot.com/-6PyZ3cFgPcs/TgTbc5dToSI/AAAAAAAAB30/6j6FsyeDjR8/s320/PivotTables07.gif" width="192" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-IdyoEMbpAbw/TgTbdFe3cxI/AAAAAAAAB34/xAw2zQBV3Hc/s1600/PivotTables08.gif" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="210" src="http://2.bp.blogspot.com/-IdyoEMbpAbw/TgTbdFe3cxI/AAAAAAAAB34/xAw2zQBV3Hc/s320/PivotTables08.gif" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Further grouping by Date&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;ul&gt;&lt;li&gt;If this last table is useful, you may want to remove the group subtotals before you copy the raw data into a new worksheet.&amp;nbsp; Simply right click on a Date cell inside the newly created table and uncheck the Subtotal "Date" option&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4228793464107368822-6887904087574862069?l=justinberke.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://justinberke.blogspot.com/feeds/6887904087574862069/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4228793464107368822&amp;postID=6887904087574862069' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/6887904087574862069'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/6887904087574862069'/><link rel='alternate' type='text/html' href='http://justinberke.blogspot.com/2011/06/pivottables-example-reducing-multiple.html' title='PivotTables Example: Reducing Multiple Records for One Site'/><author><name>Justin</name><uri>http://www.blogger.com/profile/13405139779467188945</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VJ2U8mMqPfU/SoSptGXK8iI/AAAAAAAABOQ/qRpz6nqiK7k/S220/pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-0k_drT0nR0o/TgS-lbWHDbI/AAAAAAAAB3c/JM_VkrXNYU0/s72-c/PivotTables01.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4228793464107368822.post-8909924437500405271</id><published>2011-06-13T14:55:00.002-04:00</published><updated>2011-06-13T15:43:51.825-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SCUBA Diving'/><title type='text'>Running Line in a Cave</title><content type='html'>Here's my first shot at an illustration of running line from open water into an overhead environment such as a cavern or cave.&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-mPEWR8YKNUs/TfZYEyakPyI/AAAAAAAAB3Y/GCf0slOsnbs/s1600/Running+Line.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="285" src="http://2.bp.blogspot.com/-mPEWR8YKNUs/TfZYEyakPyI/AAAAAAAAB3Y/GCf0slOsnbs/s400/Running+Line.jpg" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;[Click to enlarge]&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;I suggest practicing in open water or even on land so you won't have to worry about holding a flash light on your knot (though it's much easier to run line in water; the line won't fall to the ground as quickly because it will be suspended better in the water column.).&amp;nbsp; Run a course around a spring basin where there will usually be plenty of large rocks and tree branches to use as tie-off points.&lt;br /&gt;&lt;br /&gt;Here's a video example.&amp;nbsp; Watch at 0:40 and 1:10 for this technique.&amp;nbsp; The only difference is that the diver does not wrap the line back around a couple times - but that is not always necessary if the spot is secure.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;iframe allowfullscreen="" frameborder="0" height="349" src="http://www.youtube.com/embed/Im_GEvFN0hw" width="425"&gt;&lt;/iframe&gt;&lt;/center&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="font-size: large;"&gt;&lt;u&gt;Things to consider&lt;/u&gt;:&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Another technique is to wrap first, then pull the tension from the incoming line last.&amp;nbsp; This will help keep tension on your line between tie-offs, however I like to pull the tension first to shore up previous segments.&amp;nbsp; Practice on your own and use whatever works best for you and&amp;nbsp; the situations you regularly face.&lt;/li&gt;&lt;li&gt;Running the reel close to the floor of a cave/cavern can &lt;b&gt;easily&lt;/b&gt; stir up the bottom, or even cause a silt-out.&amp;nbsp; Try making a loop with the line and fixing the loop around the rock or spur without moving the reel through the sediment.&amp;nbsp; Watch the video above from 3:38 to 3:56 for an example of how to do this.&amp;nbsp; Simply make a loop, attach the loop to a good spot, and pull tight.&amp;nbsp; The diver above makes two loops before pulling to secure the loops.&lt;/li&gt;&lt;li&gt;Not all tie-off locations can actually be tied.&amp;nbsp; Often turning a corner around a large rock or other firm piece of debris will be a sufficient way to secure line as long as there is enough tension on the line.&amp;nbsp; This can serve as an intermediate spot between two tie-offs.&amp;nbsp; Further, if there are only loose rocks (football-basketball sized) available, don't bother wrapping.&amp;nbsp; Just lay your line and put a rock on top of it to hold it down.&amp;nbsp; It's easy for a line to become unwrapped, thus losing tension, and this will also conserve some line as well.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4228793464107368822-8909924437500405271?l=justinberke.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://justinberke.blogspot.com/feeds/8909924437500405271/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4228793464107368822&amp;postID=8909924437500405271' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/8909924437500405271'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/8909924437500405271'/><link rel='alternate' type='text/html' href='http://justinberke.blogspot.com/2011/06/running-line-in-cave.html' title='Running Line in a Cave'/><author><name>Justin</name><uri>http://www.blogger.com/profile/13405139779467188945</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VJ2U8mMqPfU/SoSptGXK8iI/AAAAAAAABOQ/qRpz6nqiK7k/S220/pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-mPEWR8YKNUs/TfZYEyakPyI/AAAAAAAAB3Y/GCf0slOsnbs/s72-c/Running+Line.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4228793464107368822.post-8175658507937476841</id><published>2011-05-06T16:55:00.002-04:00</published><updated>2011-05-06T17:02:06.736-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='symbology'/><category scheme='http://www.blogger.com/atom/ns#' term='lol'/><category scheme='http://www.blogger.com/atom/ns#' term='art'/><category scheme='http://www.blogger.com/atom/ns#' term='cartography'/><category scheme='http://www.blogger.com/atom/ns#' term='projection'/><category scheme='http://www.blogger.com/atom/ns#' term='web-tech'/><category scheme='http://www.blogger.com/atom/ns#' term='geography'/><title type='text'>Dinosaur Comics Mishegas</title><content type='html'>In response to the &lt;a href="http://www.qwantz.com/index.php?comic=1955"&gt;May 6th Dinosaur Comic&lt;/a&gt;:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.qwantz.com/index.php?comic=1955" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-FFdhOSLVe9Q/TcRexDitvaI/AAAAAAAAB2c/1M5cBo2T2cA/s1600/dino01-comic.gif" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.qwantz.com/comics/comic2-1966.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;Taco arrows:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-cvf0xCyG74A/TcRhlmoBE-I/AAAAAAAAB24/-YPlPR_fYfU/s1600/dino02+-+Taco+North+Arrows.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="167" src="http://4.bp.blogspot.com/-cvf0xCyG74A/TcRhlmoBE-I/AAAAAAAAB24/-YPlPR_fYfU/s400/dino02+-+Taco+North+Arrows.PNG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;And once again, my "Raptogram" projection (&lt;a href="http://justinberke.blogspot.com/2009/02/velociraptor-projection-aka-raptogram.html"&gt;full description&lt;/a&gt;):&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://justinberke.blogspot.com/2009/02/velociraptor-projection-aka-raptogram.html" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="211" src="http://2.bp.blogspot.com/_VJ2U8mMqPfU/SaMhf_VdWKI/AAAAAAAAAsU/SBMWOlBmbR0/s400/raptorgram.bmp" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4228793464107368822-8175658507937476841?l=justinberke.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://justinberke.blogspot.com/feeds/8175658507937476841/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4228793464107368822&amp;postID=8175658507937476841' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/8175658507937476841'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/8175658507937476841'/><link rel='alternate' type='text/html' href='http://justinberke.blogspot.com/2011/05/dinosaur-comics-mishegas.html' title='Dinosaur Comics Mishegas'/><author><name>Justin</name><uri>http://www.blogger.com/profile/13405139779467188945</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VJ2U8mMqPfU/SoSptGXK8iI/AAAAAAAABOQ/qRpz6nqiK7k/S220/pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-FFdhOSLVe9Q/TcRexDitvaI/AAAAAAAAB2c/1M5cBo2T2cA/s72-c/dino01-comic.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4228793464107368822.post-5995383702992395224</id><published>2011-04-18T17:14:00.002-04:00</published><updated>2011-05-10T10:12:53.933-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GIS'/><category scheme='http://www.blogger.com/atom/ns#' term='computer bricka-brack'/><title type='text'>Admin Privileges: You need 'em</title><content type='html'>There are indeed worse interruptions to encounter during a productive working session than meeting that little error message that tells you that something has been denied because you do not have administrative privileges.&amp;nbsp; Still, it's an annoying little splinter that reminds you that you're not allowed to use your workstation.&amp;nbsp; This can range from opening clock on your task bar to quickly view the calendar in Windows Date and Time Properties to installing software.&lt;br /&gt;&lt;br /&gt;If you're using ArcGIS, or any other GIS software for that matter, you need administrator privileges on your machine.&amp;nbsp; Here are a few reasons why:&lt;br /&gt;&lt;br /&gt;ArcMap has a lot of advanced technical settings that can be changed to make the software work more efficiently for yourself or a specific project.&amp;nbsp; Many of these control the way the software interacts with your computer, so the settings are saved in the registry.&amp;nbsp; Registry keys are very sensitive and a lot can go wrong with just a little tweaking, so these are often off limits to non-admins.&amp;nbsp; Such settings can be found in the ArcMap Advanced Settings utility in the following directory:&lt;br /&gt;&lt;br /&gt;&amp;lt;ArcGISHOME&amp;gt; \Utilities\AdvancedArcMapSettings.exe&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;(&amp;lt;ArcGISHOME&amp;gt; = C:\arcgis, or C:\Program Files\ArcGIS, etc.)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_VJ2U8mMqPfU/S0yoP74oT-I/AAAAAAAABe8/wsl5nveqeYI/s1600-h/Admin01+-+AdvArcMapSetttings.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_VJ2U8mMqPfU/S0yoP74oT-I/AAAAAAAABe8/wsl5nveqeYI/s320/Admin01+-+AdvArcMapSetttings.gif" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Further, there are a number of third party software utilities that are light, benign, and VERY HELPFUL when you're still learning your way around geoprocessing procedures.&amp;nbsp; &lt;a href="http://www.ian-ko.com/"&gt;ETGeoWizards&lt;/a&gt; is a great &lt;b&gt;free&lt;/b&gt; package that has helped me through some projects.&amp;nbsp; There are dozens of processes that are very well organized.&amp;nbsp; Nine thumbs up.&amp;nbsp; &lt;a href="http://www.xtoolspro.com/"&gt;XTools&lt;/a&gt; is another package that (I'm pretty sure) requires admin privileges to install.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.aubreyrhea.net/gis/images/et.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="192" src="http://www.aubreyrhea.net/gis/images/et.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;Screenshot of ETGeoWizards for ArcMap&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;There are a hand full of other reasons why you should have access to your workstation, but these should suffice for now.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;b style="color: black;"&gt;Update: 4/18/2011:&lt;/b&gt;&lt;br /&gt;&lt;span style="color: black;"&gt;I received a request to justify administrative rights on my machine.&amp;nbsp; Here's my request:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="color: #274e13;"&gt;&lt;i&gt;"It is necessity for my workstation to continue to utilize administrative privileges due to the nature in which GIS software is used on a daily basis on my machine here at FDEP. ArcGIS has a number of advanced properties that often need to be managed by altering various registry settings for the software package. Further, I will be using Microsoft’s Visual Studio .NET to author, test, and install a number of custom applications to use in conjunction with the ArcGIS interface. The usefulness of many of these customizations and other third party plug-ins require administrative privileges to work effectively."&lt;/i&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;blockquote style="color: black;"&gt;&lt;b&gt;Update: 5/10/2011:&lt;/b&gt;&lt;br /&gt;Another instance of ArcMap Advanced Settings that require Admin privileges: &lt;br /&gt;&lt;br /&gt;I'm editing a large statewide network of streams and just populated a new field of unique identifiers.&amp;nbsp; Upon saving these calculations, I received an error message reading, "&lt;i&gt;Unable to save edits. File sharing lock count exceeded.&amp;nbsp; Increase MaxLocksPerFile registry entry.&lt;/i&gt;"&lt;br /&gt;&lt;br /&gt;This value can easily be changed via ArcMap Advanced Settings, under the Editor tab.&amp;nbsp; However this changes a value in the system registry (there is even a warning next to this setting in the application), so changing this setting -- among other similar tasks -- requires admin privileges.&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4228793464107368822-5995383702992395224?l=justinberke.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://justinberke.blogspot.com/feeds/5995383702992395224/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4228793464107368822&amp;postID=5995383702992395224' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/5995383702992395224'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/5995383702992395224'/><link rel='alternate' type='text/html' href='http://justinberke.blogspot.com/2010/01/admin-privileges-you-need-em.html' title='Admin Privileges: You need &apos;em'/><author><name>Justin</name><uri>http://www.blogger.com/profile/13405139779467188945</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VJ2U8mMqPfU/SoSptGXK8iI/AAAAAAAABOQ/qRpz6nqiK7k/S220/pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_VJ2U8mMqPfU/S0yoP74oT-I/AAAAAAAABe8/wsl5nveqeYI/s72-c/Admin01+-+AdvArcMapSetttings.gif' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4228793464107368822.post-6316390502337946337</id><published>2011-04-01T17:51:00.002-04:00</published><updated>2011-04-01T17:52:38.765-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vector'/><category scheme='http://www.blogger.com/atom/ns#' term='GIS'/><category scheme='http://www.blogger.com/atom/ns#' term='cartography'/><title type='text'>Alternating Rounded Corners on Graphic Elements</title><content type='html'>I like legends that blend in with the neatline of a map but if there are disconnected graphical elements with rounded corners then a sharp corner will not match.&lt;br /&gt;&lt;br /&gt;The solution is as simple as aligning graphical elements (drawing various shapes) and applying a Union process to make a single shape.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Begin by adding two Rectangle elements and either a Circle or an Ellipse element (holding Ctrl while dragging the boundary of an ellipse will create a circle by keeping the aspect ratio of the width and height equal; the same goes for drawing a square with the Rectangle tool) to the Layout view of an ArcMap project&lt;/li&gt;&lt;/ul&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-EKsJVSIBf7w/TZYoipnu2MI/AAAAAAAAB1U/XMm98XR6l14/s1600/01-AddShapes.gif" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="302" src="http://2.bp.blogspot.com/-EKsJVSIBf7w/TZYoipnu2MI/AAAAAAAAB1U/XMm98XR6l14/s320/01-AddShapes.gif" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Add two Rectangles and a Circle&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-Mly52Iph1BA/TZYyvGyBXhI/AAAAAAAAB1Y/a0WcP9YapaY/s1600/02-Animation.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;/a&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Align the top of the circle with the tall rectangle and the right side of the circle with the wide rectangle.&amp;nbsp; This can be done by either using ruler guides or by selecting two objects and using alignment tools that may be on a toolbar, or by right clicking on the selected objects and choosing an alignment method from the Align sub-menu.&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: center;"&gt;&lt;img border="0" height="320" src="http://3.bp.blogspot.com/-Mly52Iph1BA/TZYyvGyBXhI/AAAAAAAAB1Y/a0WcP9YapaY/s1600/02-Animation.gif" width="320" /&gt; &lt;/div&gt;&lt;ul&gt;&lt;li&gt;Once the objects are aligned, select all three elements, right click on them and navigate to the Graphic Operations menu, and choose Union &lt;img border="0" src="http://3.bp.blogspot.com/-0b5L90l7PwU/TZY5Jqk9DUI/AAAAAAAAB1w/RmCmbgTGuBE/s1600/03b_UnionTool.gif" /&gt; to blend all three objects together into a single element&lt;/li&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-bvR7ejQ5BOo/TZY40mjU_cI/AAAAAAAAB1s/nj5TOj_ZBg8/s1600/03_Union.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-bvR7ejQ5BOo/TZY40mjU_cI/AAAAAAAAB1s/nj5TOj_ZBg8/s1600/03_Union.gif" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-Dbr5XVkEXBo/TZZHDj0NcgI/AAAAAAAAB2A/49rR5ahUl2I/s1600/04_AlternatingRoundedCorners_InsetMap.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;/a&gt;&lt;/div&gt;From this point one can scale the curve smaller, use smaller circles to create sharper corners or ellipses for more gradually curving ellipses, combine these elements with others, or use other Graphic Operations to create more advanced features (Intersect &lt;img border="0" src="http://3.bp.blogspot.com/-UmLfPcjdAtY/TZY-DI9XO1I/AAAAAAAAB10/zL6aErlgtGY/s1600/03c_Intersect.gif" /&gt;, Subtract &lt;img border="0" src="http://1.bp.blogspot.com/-RCbaP3pAixQ/TZY-EPBem5I/AAAAAAAAB18/YeYVLxbBKIc/s1600/03e_Subtract.gif" /&gt;); some even with negative space (Remove Overlap&lt;img border="0" src="http://4.bp.blogspot.com/-PKfqvHDRjv8/TZY-Dt4ACpI/AAAAAAAAB14/gE4OOfKD0cI/s1600/03d_RemoveOverlap.gif" /&gt;).&lt;br /&gt;&lt;br /&gt;The following is a quick example of a few of these methods.&amp;nbsp; The inset title box was flipped horizontally, and a couple of additional boxes were Unioned to extend the space for the scale bar.&amp;nbsp; The north arrow box was simply a circle with three quarters Subtracted from a digitized polygon.&amp;nbsp; Guides assisted the alignment for clean and even corners.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-Dbr5XVkEXBo/TZZHDj0NcgI/AAAAAAAAB2A/49rR5ahUl2I/s1600/04_AlternatingRoundedCorners_InsetMap.gif" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-Dbr5XVkEXBo/TZZHDj0NcgI/AAAAAAAAB2A/49rR5ahUl2I/s1600/04_AlternatingRoundedCorners_InsetMap.gif" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div style="text-align: left;"&gt;Note: Since these are vector graphics, the elements can be easily scaled with a clean look.&amp;nbsp; In some cases, however, if the shapes are not aligned together precisely, distortions can occur where two elements were joined together.&lt;/div&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4228793464107368822-6316390502337946337?l=justinberke.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://justinberke.blogspot.com/feeds/6316390502337946337/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4228793464107368822&amp;postID=6316390502337946337' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/6316390502337946337'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/6316390502337946337'/><link rel='alternate' type='text/html' href='http://justinberke.blogspot.com/2011/04/alternating-rounded-corners-on-graphic.html' title='Alternating Rounded Corners on Graphic Elements'/><author><name>Justin</name><uri>http://www.blogger.com/profile/13405139779467188945</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VJ2U8mMqPfU/SoSptGXK8iI/AAAAAAAABOQ/qRpz6nqiK7k/S220/pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-EKsJVSIBf7w/TZYoipnu2MI/AAAAAAAAB1U/XMm98XR6l14/s72-c/01-AddShapes.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4228793464107368822.post-7824547454870225357</id><published>2011-01-14T12:47:00.009-05:00</published><updated>2011-01-28T16:01:13.696-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='DIY'/><category scheme='http://www.blogger.com/atom/ns#' term='research'/><category scheme='http://www.blogger.com/atom/ns#' term='computer bricka-brack'/><category scheme='http://www.blogger.com/atom/ns#' term='coding'/><title type='text'>Java Introduction / Cheat Sheet</title><content type='html'>&lt;blockquote&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;b style="color: #783f04;"&gt;› I will continue to add to this article over the coming weeks.&lt;/b&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;&lt;i&gt; &lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;&lt;i&gt;Setup:&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;You'll need to download and install two things to get started coding:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.oracle.com/technetwork/java/javase/index-137561.html"&gt;Java SE 6 JDK&lt;/a&gt; (Java Platform, Standard Edition 6 Development Kit)&lt;br /&gt;- Choose your operating system and platform and download the JDK version, not the JRE (only the runtime environment)&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.eclipse.org/downloads/moreinfo/java.php"&gt;Eclipse IDE&lt;/a&gt; (Integrated Development Environment)&lt;br /&gt;This is the interface through which you will be programming, compiling, and running and testing code&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt; &lt;ul&gt;&lt;/ul&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;&lt;i&gt;Hello world:&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;This simple program will output the text, "&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Hello, World!&lt;/span&gt;" (without quotes).&lt;br /&gt;&lt;br /&gt;The program is composed of a class definition named &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;HelloWorld&lt;/span&gt;.&amp;nbsp; The &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;HelloWorld &lt;/span&gt;class runs from the first opening brace (&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;{&lt;/span&gt;) to the last closing brace (&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;}&lt;/span&gt;).&amp;nbsp; All Java programs use class definitions.&lt;br /&gt;&lt;br /&gt;The next portion of code sets up the &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;main&lt;/span&gt; method.&amp;nbsp; Methods define the operations that an object or program will perform.&amp;nbsp; The code in a method lives inside another set of braces (&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;{}&lt;/span&gt;) In this case, the program is simply printing a line that says "&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Hello, World!&lt;/span&gt;" using the &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;println&lt;/span&gt; (print line) method of the &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;out&lt;/span&gt; object, which is stored in Java's predefined &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;System&lt;/span&gt; class.&lt;br /&gt;&lt;blockquote&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="color: purple;"&gt;public class &lt;/span&gt;&lt;span style="color: black;"&gt;HelloWorld&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;{&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: purple;"&gt;public static void&lt;span style="color: black;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="color: black;"&gt;main (String[] args)&lt;/span&gt;&lt;/div&gt;&lt;div style="color: black; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.&lt;/span&gt;&lt;span style="color: blue;"&gt;out&lt;/span&gt;&lt;span style="color: black;"&gt;.println (&lt;/span&gt;&lt;span style="color: blue;"&gt;"Hello, World!"&lt;/span&gt;&lt;span style="color: black;"&gt;);&lt;/span&gt;&lt;br /&gt;&lt;div style="color: black;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;That's it! This Java program contains just three simple steps:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Define a class named &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;HelloWorld&lt;/span&gt;.&amp;nbsp; Its code is included between two braces&lt;/li&gt;&lt;li&gt;Define a method named &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;main&lt;/span&gt; that has a few settings that aren't really important to know about yet, but can be explained a bit further in &lt;a href="http://download.oracle.com/javase/tutorial/java/javaOO/methods.html"&gt;this Java tutorial&lt;/a&gt;.&amp;nbsp; The code between the method's braces will be instructions to be performed by the program&lt;/li&gt;&lt;li&gt;Call the &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;println&lt;/span&gt; method from the &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;System&lt;/span&gt; class's &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;out&lt;/span&gt; object to write "Hello, World!" as output.&amp;nbsp; This instruction is ended with a semicolon (&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;;&lt;/span&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;&lt;i&gt;Comments:&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;Comments are an efficient and important way to provide documentation and insight as to what your program is doing at any given point in the code.&amp;nbsp; Be sure to include detailed descriptions to help you or another programmer when returning to review or revise the code at a later time.&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="color: green; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;// Single-line comment&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;// This can be attached after some code on a line.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;// Anything after these slashes on the same line&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;// &amp;nbsp; will be omitted&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;/* A comment spanning several lines:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;EVERYTHING between these comment marks will&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;be omitted by the Java interpreter */&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;&lt;i&gt;Variables &amp;amp; Constants:&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;i&gt;Variables &lt;/i&gt;and &lt;i&gt;constants &lt;/i&gt;are places in code to store information for the program to use and reference.&amp;nbsp; &lt;i&gt;Variables &lt;/i&gt;are dynamic; in that once they are created they can remain blank or equal to zero, or they can hold text or numeric information or be set to true or false.&amp;nbsp; Examples include any kind user provided data, an e-mail address, age, phone number, number of stars given on a restaurant or movie review, a program iteration number, amount of records in a database, etc.&amp;nbsp; Further, they can be changed at any time, or erased and set back to their original  "blank" or "null" state.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Constants&lt;/i&gt;, on the other hand, can also hold data, though these will be set once when the program begins and will remain the same throughout the program's life.&amp;nbsp; Examples include the number pi, thresholds (1 millionth customer at a store, the upper limit of $1.00 on the Price is Right Showcase Showdown), freezing/boiling points of water in °F/°C/°K, etc.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;&lt;i&gt;Identifiers:&lt;/i&gt;&lt;/b&gt; &lt;span style="font-size: small;"&gt;are variables, constants, reserve words, etc.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Alphanumeric, underscores (_),&amp;nbsp; and dollar signs ($)&lt;/li&gt;&lt;li&gt;Case sensitive&lt;/li&gt;&lt;li&gt;Can be any length&lt;/li&gt;&lt;li&gt;Must not begin with a number&lt;/li&gt;&lt;/ul&gt;&lt;u&gt;Acceptable&lt;/u&gt;:&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;int_Value&lt;/span&gt;, &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;String3&lt;/span&gt;, &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$LakeSize&lt;/span&gt;, &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;_StreamSize&lt;/span&gt;, &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$100&lt;/span&gt;, &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;a_very_long_stupid_string_that_should_be_shortened&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Unacceptable&lt;/u&gt;:&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;int-Value&lt;/span&gt;, &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;3rdString&lt;/span&gt;, &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Lake Size&lt;/span&gt;, &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;_Stream#Size&lt;/span&gt;...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;i&gt;&lt;b&gt;Escape Sequences:&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;This is a list of special characters that can be used in a program which would otherwise cause a compile-time, run-time, or logic error if entered directly.&amp;nbsp; For instance, entering &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;"""&lt;/span&gt; (a string containing a double quote character) will cause a compile-time error because the the middle quotation mark will be interpreted as the end of a blank string.&amp;nbsp; Instead the code would need to be entered as &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;"\""&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;table align="center" border="0" cellpadding="3" cellspacing="1" style="background-color: black;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="background-color: #99ccff; text-align: center;"&gt;&lt;b&gt;Sequence&lt;/b&gt;&lt;/td&gt;&lt;td style="background-color: #99ccff; text-align: center;" width="100"&gt;&lt;b&gt;Output&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="background-color: #ffffee; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; text-align: center;"&gt;\b&lt;/td&gt;&lt;td style="background-color: #ffffee; text-align: left;"&gt;backspace &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="background-color: #ffffee; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; text-align: center;"&gt;\t&lt;/td&gt;&lt;td style="background-color: #ffffee; text-align: left;"&gt;tab &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="background-color: #ffffee; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; text-align: center;"&gt;\n&lt;/td&gt;&lt;td style="background-color: #ffffee; text-align: left;"&gt;newline &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="background-color: #ffffee; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; text-align: center;"&gt;\r&lt;/td&gt;&lt;td style="background-color: #ffffee; text-align: left;"&gt;carriage return &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="background-color: #ffffee; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; text-align: center;"&gt;\"&lt;/td&gt;&lt;td style="background-color: #ffffee; text-align: left;"&gt;double quote &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="background-color: #ffffee; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; text-align: center;"&gt;\'&lt;/td&gt;&lt;td style="background-color: #ffffee; text-align: left;"&gt;single quote &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="background-color: #ffffee; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; text-align: center;"&gt;\\&lt;/td&gt;&lt;td style="background-color: #ffffee; text-align: left;"&gt;backslash &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;i&gt;&lt;b&gt;Conditional Operators:&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;table align="center" border="0" cellpadding="3" cellspacing="1" style="background-color: black;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td colspan="2" style="background-color: #99ccff; text-align: center;"&gt;&lt;b&gt;&lt;i&gt;Equality / Relational&lt;/i&gt;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="background-color: #99ccff; text-align: center;"&gt;&lt;b&gt;Operator&lt;/b&gt;&lt;/td&gt;&lt;td style="background-color: #99ccff; text-align: center;" width="150"&gt;&lt;b&gt;Value&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="background-color: #ffffee; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; text-align: center;"&gt;==&lt;/td&gt;&lt;td style="background-color: #ffffee; text-align: left;"&gt;equal to &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="background-color: #ffffee; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; text-align: center;"&gt;!=&lt;/td&gt;&lt;td style="background-color: #ffffee; text-align: left;"&gt;not equal to&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="background-color: #ffffee; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; text-align: center;"&gt;&amp;lt;&lt;/td&gt;&lt;td style="background-color: #ffffee; text-align: left;"&gt;less than&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="background-color: #ffffee; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; text-align: center;"&gt;&amp;lt;=&lt;/td&gt;&lt;td style="background-color: #ffffee; text-align: left;"&gt;less than or equal to&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="background-color: #ffffee; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; text-align: center;"&gt;&amp;gt;&lt;/td&gt;&lt;td style="background-color: #ffffee; text-align: left;"&gt;greater than &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="background-color: #ffffee; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; text-align: center;"&gt;&amp;gt;=&lt;/td&gt;&lt;td style="background-color: #ffffee; text-align: left;"&gt;greater than or equal to &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;table align="center" border="0" cellpadding="3" cellspacing="1" style="background-color: black;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td colspan="3" style="background-color: #99ccff; text-align: center;"&gt;&lt;b&gt;&lt;i&gt;Logical&lt;/i&gt;&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="background-color: #99ccff; text-align: center;"&gt;&lt;b&gt;Operator&lt;/b&gt;&lt;/td&gt;&lt;td style="background-color: #99ccff; text-align: center;"&gt;&lt;b&gt;Value&lt;/b&gt;&lt;/td&gt;&lt;td style="background-color: #99ccff; text-align: center;" width="75"&gt;&lt;b&gt;Use&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="background-color: #ffffee; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; text-align: center;"&gt;!&lt;/td&gt;&lt;td style="background-color: #ffffee; text-align: left;"&gt;NOT&lt;/td&gt;&lt;td style="background-color: #ffffee; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; text-align: center;"&gt;! a&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="background-color: #ffffee; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; text-align: center;"&gt;&amp;amp;&amp;amp;&lt;/td&gt;&lt;td style="background-color: #ffffee; text-align: left;"&gt;AND&lt;/td&gt;&lt;td style="background-color: #ffffee; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; text-align: center;"&gt;x &amp;amp;&amp;amp; y&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="background-color: #ffffee; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; text-align: center;"&gt;||&lt;/td&gt;&lt;td style="background-color: #ffffee; text-align: left;"&gt;OR&lt;/td&gt;&lt;td style="background-color: #ffffee; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; text-align: center;"&gt;x || y&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;i&gt;&lt;b&gt;Resources:&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://download.oracle.com/javase/tutorial/java/TOC.html"&gt;Learning the Java Language&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.amazon.com/gp/product/0132128810/ref=pd_lpo_k2_dp_sr_1?pf_rd_p=1278548962&amp;amp;pf_rd_s=lpo-top-stripe-1&amp;amp;pf_rd_t=201&amp;amp;pf_rd_i=0321429729&amp;amp;pf_rd_m=ATVPDKIKX0DER&amp;amp;pf_rd_r=1H8K4MD7KN7HTDR75ZGA"&gt;Java Foundations, Lewis&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://ecx.images-amazon.com/images/I/61n3H3QBrsL._SL500_AA300_.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="200" src="http://ecx.images-amazon.com/images/I/61n3H3QBrsL._SL500_AA300_.jpg" width="200" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Java Foundations, 2nd Edition&lt;br /&gt;John Lewis, et. al&lt;/td&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4228793464107368822-7824547454870225357?l=justinberke.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://justinberke.blogspot.com/feeds/7824547454870225357/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4228793464107368822&amp;postID=7824547454870225357' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/7824547454870225357'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/7824547454870225357'/><link rel='alternate' type='text/html' href='http://justinberke.blogspot.com/2011/01/java-cheat-sheet.html' title='Java Introduction / Cheat Sheet'/><author><name>Justin</name><uri>http://www.blogger.com/profile/13405139779467188945</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VJ2U8mMqPfU/SoSptGXK8iI/AAAAAAAABOQ/qRpz6nqiK7k/S220/pic.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4228793464107368822.post-2659066144223213725</id><published>2011-01-03T13:39:00.002-05:00</published><updated>2011-01-03T13:42:05.734-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DIY'/><category scheme='http://www.blogger.com/atom/ns#' term='computer bricka-brack'/><category scheme='http://www.blogger.com/atom/ns#' term='efficiency'/><title type='text'>Remove Cryptic Folders in XP</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_VJ2U8mMqPfU/TSIPcF8cxGI/AAAAAAAABzc/sXeiOhjdIGw/s1600/01-Folders.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="335" src="http://4.bp.blogspot.com/_VJ2U8mMqPfU/TSIPcF8cxGI/AAAAAAAABzc/sXeiOhjdIGw/s400/01-Folders.gif" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;I've seen a lot of these weird, cryptic folders appearing on the root of my Windows XP machine for a while but never knew what to do with them.&amp;nbsp; I had data "Ghosted" over from a previous hard drive that had a mechanical failure, and most of these appeared after the recovery.&amp;nbsp; These are all seemingly random combinations of letters and numbers between 20 and 30 characters long on the root of my master hard drive (C:\).&lt;br /&gt;&lt;br /&gt;Reading a few forums/technical documents gave me the impression that these are temporary directories and files that are left over from updates that have occurred in the past.&amp;nbsp; These should have been automatically removed, but they are often left behind.&amp;nbsp; Other users in my office have a couple of such folders laying around, and my computers at home have one or two as well, although my work machine has a couple dozen, which take up almost 3 GB of hard drive space!&amp;nbsp; As far as I can tell, these left over, benign files can and should be removed.&lt;br /&gt;&lt;br /&gt;Attempting to delete any of these folders simply return security/access errors, so I tried to delete them using Windows Explorer in Safe Mode.&amp;nbsp; No luck.&amp;nbsp; I then tried using a &lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;del&lt;/span&gt;&lt;/span&gt; command in Safe Mode's Command Prompt.&amp;nbsp; No luck either.&lt;br /&gt;&lt;br /&gt;The trick is to set Delete permissions for the administrator/user.&amp;nbsp; It may help to be in Safe Mode, but I was able to delete some without being in Safe Mode.&amp;nbsp; My account also has Administrative privileges, so that is more likely necessary.&lt;br /&gt;&lt;br /&gt;The following are two methods for removing these data.&amp;nbsp; "Individually" contains the method that illustrates how to access the specific setting that is restricting these files/directories from being deleted.&amp;nbsp; "En masse" is a faster method to delete all of these folders at once.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;u&gt;&lt;i&gt;&lt;b&gt;Remove Individually&lt;/b&gt;&lt;/i&gt;&lt;/u&gt;&lt;i&gt;&lt;b&gt;:&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&amp;nbsp;Right click on a folder or a file and select Properties&lt;/li&gt;&lt;li&gt;Navigate to the Security tab and click the Advanced button toward the bottom of the dialog box&lt;/li&gt;&lt;li&gt;Highlight one entry at a time, starting with Administrators, and choose Edit (or just double click an entry to edit its permissions)&lt;/li&gt;&lt;li&gt;Scroll down and check the box to Allow this entity Delete permissions.&amp;nbsp; Remove any Deny permissions if that happens to be selected, but these boxes should be blank.&amp;nbsp; Click OK once to return to the "Advanced Security Settings for [Folder Name]" dialog&lt;/li&gt;&lt;li&gt;Repeat the previous two steps for teach additional entry in this list.&amp;nbsp; Others may include SYSTEM, CREATOR OWNER, Users [...], etc.&lt;/li&gt;&lt;li&gt;Now deleting the folder or file should not return any errors and the data can be deleted normally&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size: large;"&gt;&lt;i&gt;&lt;b&gt;&lt;u&gt;Remove En Masse&lt;/u&gt;:&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Select all cryptic folders.&amp;nbsp; Be sure not to include system/necessary program folders in this selection (see the graphic at the top of this article)&lt;/li&gt;&lt;li&gt; Right click and select Properties to open the properties for all directories&lt;/li&gt;&lt;li&gt;Click on the the Security tab.&amp;nbsp; You will be prompted with a Security warning&lt;/li&gt;&lt;li&gt;When prompted, choose Yes to reset security permissions for all selected folders&lt;/li&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_VJ2U8mMqPfU/TSIPnvHKrFI/AAAAAAAABzg/v5uNq9cPrV8/s1600/02-SecurityWarning.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="110" src="http://4.bp.blogspot.com/_VJ2U8mMqPfU/TSIPnvHKrFI/AAAAAAAABzg/v5uNq9cPrV8/s400/02-SecurityWarning.gif" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;All permissions will now be reset to "Allow," specifically the Delete process&lt;/li&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_VJ2U8mMqPfU/TSIWX7iIeOI/AAAAAAAABzk/onOYRO7DhSw/s1600/03-Permissions.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://3.bp.blogspot.com/_VJ2U8mMqPfU/TSIWX7iIeOI/AAAAAAAABzk/onOYRO7DhSw/s400/03-Permissions.gif" width="308" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Now deleting the folders or files should not return any errors and the data can be deleted normally &lt;/li&gt;&lt;/ul&gt;Additional resources:&lt;br /&gt;&amp;nbsp;- &lt;a href="http://support.microsoft.com/kb/308421"&gt;How to take ownership of a file or a folder in Windows XP&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4228793464107368822-2659066144223213725?l=justinberke.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://justinberke.blogspot.com/feeds/2659066144223213725/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4228793464107368822&amp;postID=2659066144223213725' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/2659066144223213725'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/2659066144223213725'/><link rel='alternate' type='text/html' href='http://justinberke.blogspot.com/2011/01/remove-cryptic-folders-in-xp.html' title='Remove Cryptic Folders in XP'/><author><name>Justin</name><uri>http://www.blogger.com/profile/13405139779467188945</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VJ2U8mMqPfU/SoSptGXK8iI/AAAAAAAABOQ/qRpz6nqiK7k/S220/pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_VJ2U8mMqPfU/TSIPcF8cxGI/AAAAAAAABzc/sXeiOhjdIGw/s72-c/01-Folders.gif' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4228793464107368822.post-5508120879234425633</id><published>2010-07-20T11:47:00.000-04:00</published><updated>2010-07-28T10:53:09.168-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GIS'/><category scheme='http://www.blogger.com/atom/ns#' term='DIY'/><category scheme='http://www.blogger.com/atom/ns#' term='visualization'/><category scheme='http://www.blogger.com/atom/ns#' term='Remote Sensing'/><category scheme='http://www.blogger.com/atom/ns#' term='modeling'/><category scheme='http://www.blogger.com/atom/ns#' term='imagery'/><category scheme='http://www.blogger.com/atom/ns#' term='efficiency'/><title type='text'>Free GIS Data &amp; Resources</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;&lt;u&gt;Utilities&lt;/u&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;&lt;a href="http://www.qgis.org/"&gt;QGIS&lt;/a&gt; - Free, open source GIS software&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.esri.com/software/arcexplorer/index.html"&gt;ESRI's ArcExplorer&lt;/a&gt; is a free program to use to view GIS data&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.dnr.state.mn.us/mis/gis/tools/arcview/extensions/DNRGarmin/DNRGarmin.html"&gt;Minnesota Deptartment of Natural Resources Garmin Data Formatter&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.easygps.com/"&gt;EasyGPS&lt;/a&gt;&lt;br /&gt;Transfer files between your GPS unit and computer&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;&lt;u&gt;Data &lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;i&gt;Florida:&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.dep.state.fl.us/gis/datadir.htm"&gt;Florida Department of Environmental Protection's GeoData Directory&lt;/a&gt; &lt;br /&gt;Lots of accurate and basemap layers with very well managed metadata&lt;br /&gt;&lt;br /&gt;&lt;a href="http://ca.dep.state.fl.us/imf"&gt;FDEP's Map Direct&lt;/a&gt;  (Internet Explorer only)&lt;br /&gt;Interactive internet mapping application with DEP's GIS data&lt;br /&gt;&lt;br /&gt;&lt;a href="http://data.labins.org/2003/"&gt;FDEP's Land And Boundary INformation System ("LABINS")&lt;/a&gt;&lt;br /&gt;Orthophoto imagery, raster basemaps, Digital Elevation Models (DEMS), and other high resolution imagery and surveying data for the state of Florida.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.dot.state.fl.us/surveyingandmapping/apac.shtm"&gt;Florida Department of Transportation Aerial Photography &lt;/a&gt;&lt;br /&gt;High resolution historical imagery of Florida&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.dot.state.fl.us/planning/statistics/gis/"&gt;FDOT's GIS Directory&lt;/a&gt;&lt;br /&gt;Florida traffic information &amp;amp; transportation networks&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.fgdl.org/"&gt;Florida Geographic Data Library (FGDL)&lt;/a&gt;&lt;br /&gt;Lots of Florida data (statewide, or by county), but much of it is antiquated.&amp;nbsp; I'd look at &lt;a href="http://www.dep.state.fl.us/gis/datadir.htm"&gt;FDEP's Geodata Directory&lt;/a&gt; first.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;i&gt;Beyond Florida:&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://gos2.geodata.gov/wps/portal/gos"&gt;Geodata.gov -  Geospatial One Stop&lt;/a&gt; &lt;br /&gt;Browse US maps &amp;amp; data&lt;br /&gt;&lt;br /&gt;&lt;a href="http://libraries.mit.edu/gis/data/repository/about.html"&gt;MIT's Geodata Repository&lt;/a&gt;&lt;br /&gt;Use the navigation on the left to browse through lists of US nationwide, statewide, and worldwide datasets&lt;br /&gt;&lt;br /&gt;Stanford University Libraries &amp;amp; Academic Information Resources&lt;br /&gt;&lt;a href="http://www-sul.stanford.edu/depts/gis/MarineBioGIS.html"&gt;Marine  Biology GIS Data&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.gpsfiledepot.com/maps/"&gt;GPSFileDepot.com Garmin  GPS  Maps&lt;/a&gt;&lt;br /&gt;Browse for a number of useful layers&lt;br /&gt;&lt;br /&gt;&lt;a href="http://dixon.hul.harvard.edu:8080/HGL/hgl.jsp"&gt;Harvard Geospatial Library&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;i&gt;Bathymetry:&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;NOAA's National Geophysical Data Center&lt;br /&gt;&lt;a href="http://www.ngdc.noaa.gov/mgg/bathymetry/maps/directdownload.html"&gt;Maps &amp;amp; Scanned Images&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.ngdc.noaa.gov/mgg/fliers/04mgg01.html"&gt;U.S. Coastal Relief Models&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;&lt;u&gt;Training   &amp;amp; Tutorials &lt;/u&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;a href="http://www.ittvis.com/ProductServices/ENVI/Tutorials.aspx%20"&gt;ITT   Visual Information Solutions' ENVI tutorials&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4228793464107368822-5508120879234425633?l=justinberke.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://justinberke.blogspot.com/feeds/5508120879234425633/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4228793464107368822&amp;postID=5508120879234425633' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/5508120879234425633'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/5508120879234425633'/><link rel='alternate' type='text/html' href='http://justinberke.blogspot.com/2010/05/my-favorite-free-gis-data-resources.html' title='Free GIS Data &amp; Resources'/><author><name>Justin</name><uri>http://www.blogger.com/profile/13405139779467188945</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VJ2U8mMqPfU/SoSptGXK8iI/AAAAAAAABOQ/qRpz6nqiK7k/S220/pic.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4228793464107368822.post-6994315571345970593</id><published>2010-07-15T23:55:00.000-04:00</published><updated>2010-07-15T23:55:42.731-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web site idea'/><category scheme='http://www.blogger.com/atom/ns#' term='app'/><category scheme='http://www.blogger.com/atom/ns#' term='tool'/><category scheme='http://www.blogger.com/atom/ns#' term='mobile tech'/><category scheme='http://www.blogger.com/atom/ns#' term='computer bricka-brack'/><category scheme='http://www.blogger.com/atom/ns#' term='web-tech'/><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><category scheme='http://www.blogger.com/atom/ns#' term='iphone'/><title type='text'>Tech Mashup Idea: Live Street View for Google Maps</title><content type='html'>Cell phone cameras are getting much more impressive.&amp;nbsp; I just saw an 8 megapixel HD camera on an Android&amp;nbsp; phone.&amp;nbsp; Neat.&amp;nbsp; Also about time.&amp;nbsp; Android also has lots of great apps too (I really need to dig into Java programming a bit more).&amp;nbsp; After all, it's free to develop apps (&lt;a href="http://eclipse.org/"&gt;eclipse.org&lt;/a&gt;, &lt;a href="http://developer.android.com/sdk/index.html"&gt;android.com&lt;/a&gt;, etc.) for it.&amp;nbsp; A friend (&lt;a href="http://twitter.com/alanlupsha"&gt;@alanlupsha&lt;/a&gt;) and I were swapping app ideas when it finally hit me: live street view feeds.&lt;br /&gt;&lt;br /&gt;Given that phones have:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;high quality cameras to capture photos and video&lt;/li&gt;&lt;li&gt;the ability to record a lat/long position, and a bearing &amp;amp; angle (via compass app/tilt/acceleratometers)&lt;/li&gt;&lt;li&gt;the ability to send data and communicate with other devices/computers&lt;/li&gt;&lt;/ul&gt;then this app can:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;automatically geotag photos with a lat/long, direction, and angle OR&lt;br /&gt;automatically geotag frames of a video with locations along a recorded along a path (also see &lt;a href="http://www.robogeo.com/home"&gt;RoboGEO&lt;/a&gt; software)&lt;/li&gt;&lt;li&gt;upload geotagged media to a server when you return to your home wifi connection, or any other wifi hotspot (&lt;a href="http://twitter.com/alanlupsha"&gt;@alanlupsha&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;server &lt;a href="http://en.wikipedia.org/wiki/Geocoding"&gt;geocodes&lt;/a&gt; the images (with minimal effort now) and updates an internet mapping application view that can be shared individually as a single view (see &lt;a href="http://www.youtube.com/watch?v=UJ4pgcrJU8c"&gt;Google's Street View @ the 2010 Olympic ski runs&lt;/a&gt;) &lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4228793464107368822-6994315571345970593?l=justinberke.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://justinberke.blogspot.com/feeds/6994315571345970593/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4228793464107368822&amp;postID=6994315571345970593' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/6994315571345970593'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/6994315571345970593'/><link rel='alternate' type='text/html' href='http://justinberke.blogspot.com/2010/07/tech-mashup-idea-live-street-view-for.html' title='Tech Mashup Idea: Live Street View for Google Maps'/><author><name>Justin</name><uri>http://www.blogger.com/profile/13405139779467188945</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VJ2U8mMqPfU/SoSptGXK8iI/AAAAAAAABOQ/qRpz6nqiK7k/S220/pic.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4228793464107368822.post-1412423581409008464</id><published>2010-07-12T14:12:00.001-04:00</published><updated>2010-07-12T14:15:46.530-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tool'/><category scheme='http://www.blogger.com/atom/ns#' term='DIY'/><category scheme='http://www.blogger.com/atom/ns#' term='customization'/><category scheme='http://www.blogger.com/atom/ns#' term='computer bricka-brack'/><category scheme='http://www.blogger.com/atom/ns#' term='web-tech'/><category scheme='http://www.blogger.com/atom/ns#' term='efficiency'/><title type='text'>Browser Spellchecking: Text areas and text boxes</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_VJ2U8mMqPfU/TDtZN9u_s6I/AAAAAAAABxU/3TGeLF_sMP0/s1600/browserSpellchecking01.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_VJ2U8mMqPfU/TDtZN9u_s6I/AAAAAAAABxU/3TGeLF_sMP0/s320/browserSpellchecking01.gif" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;I love Mozilla's dictionary extension/add-on, though I noticed that it only works on text areas (blog entries, facebook comment boxes, etc.) as opposed to other one-line text boxes (blog titles, "Enter your name" type fields).&amp;nbsp; It turns out that this is a setting that can be changed so all text input boxes can be checked for spelling.&amp;nbsp; Also, it's not difficult to change either:&lt;br /&gt;&lt;br /&gt;Using Mozilla:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;type &lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;about:config&lt;/span&gt;&lt;/b&gt; into the&lt;span style="font-size: small;"&gt; URL address bar and hit Enter&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;take note of the resulting message, warning users to be careful with any changes and click the, "I'll be careful, I promise!" button to bring up a list of all of the preferences available in the browser&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;typ&lt;/span&gt;e &lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;layout.spellcheckDefault&lt;/span&gt;&lt;/b&gt; into the filter and double click on the matching result to change the setting from 1 to 2&lt;/li&gt;&lt;ul&gt;&lt;li&gt;0 = Disable Spellchecker&lt;/li&gt;&lt;li&gt;1 = Enable Spellchecker for multi-line controls (default)&lt;/li&gt;&lt;li&gt;2 = Enable Spellchecker for multi- and single-line controls&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Click OK to save the parameter&lt;/li&gt;&lt;/ul&gt;That's it!&amp;nbsp; Change it back to 1 if you don't like it, though I find it to be pretty useful.&lt;br /&gt;&lt;ul&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4228793464107368822-1412423581409008464?l=justinberke.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://justinberke.blogspot.com/feeds/1412423581409008464/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4228793464107368822&amp;postID=1412423581409008464' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/1412423581409008464'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/1412423581409008464'/><link rel='alternate' type='text/html' href='http://justinberke.blogspot.com/2010/07/browser-spellchecking-text-areas-and.html' title='Browser Spellchecking: Text areas and text boxes'/><author><name>Justin</name><uri>http://www.blogger.com/profile/13405139779467188945</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VJ2U8mMqPfU/SoSptGXK8iI/AAAAAAAABOQ/qRpz6nqiK7k/S220/pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_VJ2U8mMqPfU/TDtZN9u_s6I/AAAAAAAABxU/3TGeLF_sMP0/s72-c/browserSpellchecking01.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4228793464107368822.post-6094647122127028398</id><published>2010-05-27T10:07:00.286-04:00</published><updated>2011-02-03T14:54:44.048-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Excel'/><category scheme='http://www.blogger.com/atom/ns#' term='data manipulation'/><category scheme='http://www.blogger.com/atom/ns#' term='math'/><category scheme='http://www.blogger.com/atom/ns#' term='efficiency'/><category scheme='http://www.blogger.com/atom/ns#' term='coding'/><title type='text'>Formatting Spreadsheet Cells with Unit of Measure</title><content type='html'>I'm working with data imported from a GPS unit. The Altitude field is reported by a value with the unit of measure tacked on the end (below).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;iframe frameborder="0" height="194" src="http://spreadsheets.google.com/pub?key=0AmPoR3Z1imR-dHN6LXNlV2xMb2JUNnpoQ1NGSTBCUmc&amp;amp;hl=en&amp;amp;single=true&amp;amp;gid=0&amp;amp;range=A1%3AC6&amp;amp;output=html&amp;amp;widget=true" width="232"&gt;&lt;/iframe&gt;&lt;/center&gt;&lt;br /&gt;The extra characters after the numeric value need to be removed if this value is going to be used in a database or a spreadsheet.&amp;nbsp; As of now it's being stored as a text value and is not as useful for calculations, summarizations, or sorting.&lt;br /&gt;&lt;br /&gt;The general idea is to use only a certain amount of text from the left side of  the Altitude values, however there are various lengths of numbers. "11"  and "-4" are both composed of two characters, but "2" is made up of one character.&lt;br /&gt;&lt;br /&gt;The best course of action is to remove those last three characters from each value so it can be treated as an integer (or other numeric value).&amp;nbsp; The best way to do this is to combine two simple and powerful functions into a spreadsheet formula.&lt;br /&gt;&lt;br /&gt;&lt;table align="center" bgcolor="#000000" border="0" cellspacing="1"&gt;&lt;tbody bgcolor="#ffffff"&gt;&lt;tr align="Center" bgcolor="#8db3e2"&gt;&lt;td style="text-align: center;" width="80"&gt;&lt;b&gt;Function &lt;/b&gt;&lt;/td&gt;&lt;td style="text-align: center;" width="125"&gt;&lt;b&gt;Syntax&lt;/b&gt;&lt;/td&gt;&lt;td style="text-align: center;"&gt;&lt;b&gt;Description&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;Length&lt;/td&gt;&lt;td style="text-align: center;" width="60"&gt;&amp;nbsp;=LEN(text) &lt;/td&gt;&lt;td&gt;Returns the length of a string including spaces. Text is the text (or cell) whose  length is to be determined.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;Left&lt;/td&gt;&lt;td style="text-align: center;" width="60"&gt;&amp;nbsp;=LEFT(text, number) &lt;/td&gt;&lt;td&gt;Returns the first character or characters in a text string. Text is the  text (or cell) where the initial partial words are to be determined. Number  (optional) is the number of characters for the start text. If this  parameter is not defined, one character is returned.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;i&gt;&lt;b&gt;Length example:&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;The length function returns the number of characters that are present in a cell&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;iframe frameborder="0" height="194" src="http://spreadsheets.google.com/pub?key=0AmPoR3Z1imR-dHN6LXNlV2xMb2JUNnpoQ1NGSTBCUmc&amp;amp;hl=en&amp;amp;single=true&amp;amp;gid=0&amp;amp;range=A1%3AE6&amp;amp;output=html&amp;amp;widget=true" width="349"&gt;&lt;/iframe&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now that we know how many characters are found in each individual record, we can create a formula that will pull just the specific numbers we want using the Left function.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;i&gt;&lt;b&gt;Combining with the Left function:&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;The following formulas return only a certain number of the Left most characters from the Altitude field.&amp;nbsp; That number is calculated by subtracting 3 (a single space and "ft") from the total length of the Altitude field.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;iframe frameborder="0" height="194" src="http://spreadsheets.google.com/pub?key=0AmPoR3Z1imR-dHN6LXNlV2xMb2JUNnpoQ1NGSTBCUmc&amp;amp;hl=en&amp;amp;single=true&amp;amp;gid=2&amp;amp;range=A1%3AE6&amp;amp;output=html&amp;amp;widget=true" width="423"&gt;&lt;/iframe&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Sometimes Google Docs treats this text field as a number already, so the formula doesn't need to include the -3 (i.e. simply testing the =LEN(C2) formula returns 2 instead of 5).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;iframe frameborder="0" height="194" src="http://spreadsheets.google.com/pub?key=0AmPoR3Z1imR-dHN6LXNlV2xMb2JUNnpoQ1NGSTBCUmc&amp;amp;hl=en&amp;amp;single=true&amp;amp;gid=1&amp;amp;range=A1%3AE6&amp;amp;output=html&amp;amp;widget=true" width="423"&gt;&lt;/iframe&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;The Right function is very similar to the Left function.&amp;nbsp; The Mid function, on the other hand, is used to report strings that do not begin on the ends of a cell, but rather when information begins closer to the center or more than one character away from the left most position.  Check out the "Decimal Degrees to Degrees, Minutes, Seconds (DD to DMS):" section of my post on &lt;a href="http://justinberke.blogspot.com/2009/11/angular-unit-conversion-dd-dms-radians.html"&gt;Angular Unit Conversion&lt;/a&gt; for an example.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4228793464107368822-6094647122127028398?l=justinberke.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://justinberke.blogspot.com/feeds/6094647122127028398/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4228793464107368822&amp;postID=6094647122127028398' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/6094647122127028398'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/6094647122127028398'/><link rel='alternate' type='text/html' href='http://justinberke.blogspot.com/2010/05/formatting-spreadsheet-cells-with-unit.html' title='Formatting Spreadsheet Cells with Unit of Measure'/><author><name>Justin</name><uri>http://www.blogger.com/profile/13405139779467188945</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VJ2U8mMqPfU/SoSptGXK8iI/AAAAAAAABOQ/qRpz6nqiK7k/S220/pic.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4228793464107368822.post-4727317815368419342</id><published>2010-04-28T18:38:00.074-04:00</published><updated>2010-04-28T23:58:30.095-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='app'/><category scheme='http://www.blogger.com/atom/ns#' term='tool'/><category scheme='http://www.blogger.com/atom/ns#' term='GIS'/><category scheme='http://www.blogger.com/atom/ns#' term='DIY'/><category scheme='http://www.blogger.com/atom/ns#' term='VB'/><category scheme='http://www.blogger.com/atom/ns#' term='customization'/><category scheme='http://www.blogger.com/atom/ns#' term='computer bricka-brack'/><category scheme='http://www.blogger.com/atom/ns#' term='ArcObjects'/><category scheme='http://www.blogger.com/atom/ns#' term='coding'/><title type='text'>Install Non-Packaged 3rd Party GIS Plugins</title><content type='html'>Many third party GIS plugins have been neatly packaged into .dll files or batch files (ET GeoWizards, &lt;a href="http://arcscripts.esri.com/"&gt;arcscripts.esri.com&lt;/a&gt;/&lt;a href="http://resources.arcgis.com/"&gt;resources.arcgis.com&lt;/a&gt;, etc.) that can be installed or imported into ones software interface in one step.&amp;nbsp; This easy method is not always available.&amp;nbsp; Below is an example of how to install a non-packaged plugin.&amp;nbsp; For further explanation on any of these steps, refer to a previous article on &lt;a href="http://justinberke.blogspot.com/2010/04/gis-desktop-customization.html"&gt;GIS Desktop Customization&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I'll use my &lt;a href="http://justinberke.blogspot.com/2010/04/attribution-assistant-toolsetplugin-for.html"&gt;Attribution Assistant&lt;/a&gt; in the following example - &lt;a href="http://sites.google.com/site/nerdtips/home/AttributionAssistantv2.0forArcMap9x.zip?attredirects=0&amp;amp;d=1"&gt;Download the installation package&lt;/a&gt; (12 kb)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;i&gt;&lt;b&gt;What's included:&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_VJ2U8mMqPfU/S9iwu5S8y3I/AAAAAAAABtE/2f6uIZ_iDSA/s320/Install3rdPartyPlugins01-pack.gif" /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;_Attribution_Icon.bmp&lt;/b&gt; is a graphic to use as the icon that will be used to launch the tool from the ArcMap interface&lt;/li&gt;&lt;li&gt;&lt;b&gt;frmAttribution v2.0.frm&lt;/b&gt; is the form that will be imported into ArcMap.&amp;nbsp; The source code is stored in this file, and can be viewed when opened by a text editor.&amp;nbsp; Do not change any of these settings via text editor.&lt;/li&gt;&lt;li&gt;&lt;b&gt;frmAttribution v2.0.frx&lt;/b&gt; a VB binary file that accompanies the .frm file that holds graphics and other information that will be used by the application&lt;/li&gt;&lt;li&gt;&lt;b&gt;Installation instructions.txt&lt;/b&gt; is a "Readme" text file with information about the plugin&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;i&gt;&lt;b&gt;Install:&lt;/b&gt;&lt;/i&gt;&lt;/span&gt; &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Open ArcMap&lt;/li&gt;&lt;li&gt;Open the Visual Basic Editor from Tools menu under Tools :: Macros :: Visual Basic Editor&lt;/li&gt;&lt;li&gt;Locate the Project Explorer (see below).&amp;nbsp; If you want the tool to be available every time you open ArcMap, you'll import the plugin under the Normal.mxt branch.&amp;nbsp; Otherwise, installing the application under the Project branch in the Project Explorer will only allow access to the tool when working under a specific ArcMap project (a saved .mxd file).&lt;/li&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_VJ2U8mMqPfU/S9i2EtewO1I/AAAAAAAABtM/vCYtE0zrHm4/s320/Install3rdPartyPlugins02-projexplorer.gif" /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;Undocked Visual Basic Project Explorer&lt;/span&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Right click on the Normal branch and choose Import File so the plugin will be available every time ArcMap is opened.&amp;nbsp; Navigate to where the install package was unzipped, choose frmAttribution v2.0.frm and click Open.&amp;nbsp; Expand Normal and Forms to view the new form (see below), otherwise close the Visual Basic Editor.&lt;/li&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_VJ2U8mMqPfU/S9i32USjHYI/AAAAAAAABtU/mKT8z1ZFU0k/s320/Install3rdPartyPlugins03-imported.gif" /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;frmAttribution successfully imported&lt;/span&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Back in ArcMap open the Customize dialog via Tools :: Customize&lt;/li&gt;&lt;li&gt;Navigate to the Commands tab&lt;/li&gt;&lt;li&gt;Ensure that the Save in: setting is set to Normal.mxt to ensure that the tool will be available every time ArcMap is opened &lt;/li&gt;&lt;li&gt;Scroll to the bottom of the Categories menu and select [ UI Controls ]&lt;/li&gt;&lt;li&gt;Click the New UIControl button, choose UIButton Control&lt;/li&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_VJ2U8mMqPfU/Syx8qm3sXvI/AAAAAAAABdM/mlh4pKC3UNk/s320/CustomZoomTools03+-+NewUI.gif" /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Slow double click on the new control probably named Normal.UIButtonControl1 in the Commands list and rename it "Attribution_Launch."&amp;nbsp; When you press enter it will automatically rename itself "Normal.Attribution_Launch"&lt;/li&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_VJ2U8mMqPfU/S9i7MkPQ2tI/AAAAAAAABtc/hAZfjOTiy4w/s1600/Install3rdPartyPlugins04-Customize.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_VJ2U8mMqPfU/S9i7MkPQ2tI/AAAAAAAABtc/hAZfjOTiy4w/s320/Install3rdPartyPlugins04-Customize.gif" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&amp;nbsp;Drag the new control onto the ArcMap interface&lt;/li&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_VJ2U8mMqPfU/S9i8MiOI-1I/AAAAAAAABtk/HejWkxC4jU4/s1600/Install3rdPartyPlugins05-interface.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_VJ2U8mMqPfU/S9i8MiOI-1I/AAAAAAAABtk/HejWkxC4jU4/s320/Install3rdPartyPlugins05-interface.gif" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&amp;nbsp;Change the button face icon: With the Customize dialog still opened, right click on the icon that was just dropped onto the ArcMap interface and under the Change Button Image sub-menu, choose Browse&lt;/li&gt;&lt;li&gt;Navigate to the directory where the installation package was unzipped, choose _Attribution_Icon.bmp and click Open&lt;/li&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_VJ2U8mMqPfU/S9i9ZNb1yWI/AAAAAAAABts/EvKl4quxNr8/s1600/Install3rdPartyPlugins06-interface.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_VJ2U8mMqPfU/S9i9ZNb1yWI/AAAAAAAABts/EvKl4quxNr8/s320/Install3rdPartyPlugins06-interface.gif" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&amp;nbsp;With the Customize dialog still open, right click on the new button on the ArcMap interface one more time and choose View Source.&amp;nbsp; The Visual Basic Editor will open, and will automatically open the ThisDocument code under Normal.mxt, with some code written for you (don't worry if you don't completely understand this part, just follow the directions to get through it)&lt;/li&gt;&lt;li&gt;Copy and following line and paste it into the Attribution_Launch_Click subroutine:&lt;br /&gt;&lt;code&gt;Normal.frmAttribution.Show (vbModeless)&lt;/code&gt;&lt;br /&gt;It should look like the following:&lt;/li&gt;&lt;/ul&gt;&lt;code&gt;&lt;span style="color: blue;"&gt;Private Sub&lt;/span&gt; Attribution_Launch_Click()&lt;/code&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;code&gt;&amp;nbsp;Normal.frmAttribution.Show (vbModeless)&lt;br /&gt;&lt;span style="color: blue;"&gt;End Sub&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Close the Visual Basic Editor when finished and you're good to go!&amp;nbsp; Click on your new button to launch the newly imported ArcMap plugin!&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: center;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_VJ2U8mMqPfU/S9CmJVTVolI/AAAAAAAABpU/1wa6rsWfw00/s320/AttributionAssistant01_default.gif" /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4228793464107368822-4727317815368419342?l=justinberke.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://justinberke.blogspot.com/feeds/4727317815368419342/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4228793464107368822&amp;postID=4727317815368419342' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/4727317815368419342'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/4727317815368419342'/><link rel='alternate' type='text/html' href='http://justinberke.blogspot.com/2010/04/install-non-packaged-3rd-party-gis.html' title='Install Non-Packaged 3rd Party GIS Plugins'/><author><name>Justin</name><uri>http://www.blogger.com/profile/13405139779467188945</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VJ2U8mMqPfU/SoSptGXK8iI/AAAAAAAABOQ/qRpz6nqiK7k/S220/pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_VJ2U8mMqPfU/S9iwu5S8y3I/AAAAAAAABtE/2f6uIZ_iDSA/s72-c/Install3rdPartyPlugins01-pack.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4228793464107368822.post-1376880913570043566</id><published>2010-04-23T10:30:00.001-04:00</published><updated>2010-04-28T19:13:23.077-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='symbology'/><category scheme='http://www.blogger.com/atom/ns#' term='app'/><category scheme='http://www.blogger.com/atom/ns#' term='tool'/><category scheme='http://www.blogger.com/atom/ns#' term='GIS'/><category scheme='http://www.blogger.com/atom/ns#' term='VB'/><category scheme='http://www.blogger.com/atom/ns#' term='data manipulation'/><category scheme='http://www.blogger.com/atom/ns#' term='ArcObjects'/><category scheme='http://www.blogger.com/atom/ns#' term='efficiency'/><category scheme='http://www.blogger.com/atom/ns#' term='coding'/><title type='text'>Attribution Assistant: Toolset/Plugin for ArcMap 9.x</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_VJ2U8mMqPfU/S9CxPztSVsI/AAAAAAAABqs/smqpTma78A4/s320/AttributionAssistant05_Icon.gif" /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;Attribution Assistant icon&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_VJ2U8mMqPfU/S9CmJVTVolI/AAAAAAAABpU/1wa6rsWfw00/s320/AttributionAssistant01_default.gif" /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;Attribution Assistant interface&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;b&gt;&amp;nbsp;- &lt;a href="http://sites.google.com/site/nerdtips/home/AttributionAssistantv2.0forArcMap9x.zip?attredirects=0&amp;amp;d=1"&gt;Download the installation pack&lt;/a&gt; -&amp;nbsp; &lt;/b&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;This (free) application is a plugin for ArcMap 9.x that allows a user to rapidly attribute GIS data.&amp;nbsp; Simply launch the tool from a button &lt;img border="0" src="http://4.bp.blogspot.com/_VJ2U8mMqPfU/S9CxPztSVsI/AAAAAAAABqs/smqpTma78A4/s320/AttributionAssistant05_Icon.gif" /&gt; on the ArcMap interface to begin (installation instructions below).&amp;nbsp; Use the two menus to choose an available layer and a field to attribute.&amp;nbsp; Next, type a value in the text box, select some features, and press the Calculate button &lt;img border="0" src="http://4.bp.blogspot.com/_VJ2U8mMqPfU/S9O0HhWMjCI/AAAAAAAABrc/yDKX42hpFuI/s320/AttributionAssistant11_calc.gif" /&gt; to quickly apply the attribution.&amp;nbsp; It's as simple as that.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;i&gt;&lt;b&gt;Features:&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;Use the Add &lt;img src="http://4.bp.blogspot.com/_VJ2U8mMqPfU/S9O2Cac5eRI/AAAAAAAABrk/azV4vhn94fk/s320/AttributionAssistant12_add.gif" /&gt; and Remove &lt;img src="http://1.bp.blogspot.com/_VJ2U8mMqPfU/S9O2NUZOVCI/AAAAAAAABrs/KlNJgI-lM1g/s320/AttributionAssistant13_remove.gif" /&gt; buttons to manage up to 16 attribution values.&lt;br /&gt;&lt;br /&gt;Use the check boxes to "disable" a specific field or restrict access to altering the current properties - this prevents the manipulation of information.&amp;nbsp; The topmost check box enables or disables all other check boxes at once (see graphic below).&amp;nbsp; Click the button in the top left corner to expand a few extra features (see below). &lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_VJ2U8mMqPfU/S9Sl-l6196I/AAAAAAAABr4/iax4DRl7ci8/s1600/AttributionAssistant14_Locked.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_VJ2U8mMqPfU/S9Sl-l6196I/AAAAAAAABr4/iax4DRl7ci8/s320/AttributionAssistant14_Locked.gif" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;A layer and field are set with four attribution values&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;Use the Mirror tool to flip the interface for easier access to a particular control (see below).&amp;nbsp; For instance if you would rather have the Attribution Assistant sit on the left side of the screen, a user can flip the interface so the mouse does not have to travel as far to click the Calculate button.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_VJ2U8mMqPfU/S9dYbDSUeDI/AAAAAAAABsg/EZs7jdl4j1I/s1600/AttributionAssistant03_Mirror.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_VJ2U8mMqPfU/S9dYbDSUeDI/AAAAAAAABsg/EZs7jdl4j1I/s320/AttributionAssistant03_Mirror.gif" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;The interface is reversed with the Mirror tool&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Minimize the Attribution Assistant application with the Minimize button.&amp;nbsp; When you launch the tool again from the main icon on the ArcMap interface &lt;img border="0" src="http://4.bp.blogspot.com/_VJ2U8mMqPfU/S9CxPztSVsI/AAAAAAAABqs/smqpTma78A4/s320/AttributionAssistant05_Icon.gif" /&gt; all settings will be preserved.&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;Use the Import button to automatically populate the attribution boxes with (up to 16) unique values that exist in the dataset in decreasing order.&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;i&gt;&lt;b&gt;Uses:&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Basic attribution&lt;/b&gt; - select features on-the-fly with the Select Features Tool   &lt;img src="http://4.bp.blogspot.com/_VJ2U8mMqPfU/S9OqduF81YI/AAAAAAAABrU/86JWKZQRS6c/s320/AttributionAssistant10_selectfeatures.gif" /&gt; and click the calculate button &lt;img border="0" src="http://4.bp.blogspot.com/_VJ2U8mMqPfU/S9O0HhWMjCI/AAAAAAAABrc/yDKX42hpFuI/s320/AttributionAssistant11_calc.gif" /&gt; on the Attribution Assistant to apply the custom value to each of the selected features. Add a blank text box that can be used to clear an existing value. &lt;/li&gt;&lt;li&gt;&lt;b&gt;In an editing session&lt;/b&gt; - use the Attribution Assistant in an editing session to quickly attribute data as it is being digitized.&amp;nbsp; Rather than clicking inside the Attributes dialog (launched from the Editor toolbar &lt;img border="0" src="http://1.bp.blogspot.com/_VJ2U8mMqPfU/S9dbZXQCPKI/AAAAAAAABs0/6JKt4yMxQNM/s320/AttributionAssistant06_Attributes.gif" /&gt;) or clicking inside a cell in the Attribute Table and typing a (or pasting a copied) value for each new feature, one can simply close the polygon, click a single button to apply attribution, and continue.&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size: large;"&gt;&lt;i&gt;&lt;b&gt;Dynamic Help:&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;Click on any label to bring up a small explanation for each feature in the application.&amp;nbsp; Look for the Help pointer as you hover over a label &lt;img border="0" src="http://1.bp.blogspot.com/_VJ2U8mMqPfU/S9dd0RdKCRI/AAAAAAAABs8/ZoGHgafjBaM/s320/AttributionAssistant07_help.gif" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt;&lt;i&gt;&lt;b&gt;Installation:&lt;/b&gt;&lt;/i&gt;&lt;/span&gt; &lt;br /&gt;View the installation instructions for this tool in the article titled, "&lt;a href="http://justinberke.blogspot.com/2010/04/install-non-packaged-3rd-party-gis.html"&gt;Install Non-Packaged 3rd Party GIS Plugins&lt;/a&gt;"&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Refer to a previous article on &lt;a href="http://justinberke.blogspot.com/2010/04/gis-desktop-customization.html"&gt;GIS Desktop Customization&lt;/a&gt; to learn about manipulating buttons/tools and toolbars on your GIS interface.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4228793464107368822-1376880913570043566?l=justinberke.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://justinberke.blogspot.com/feeds/1376880913570043566/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4228793464107368822&amp;postID=1376880913570043566' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/1376880913570043566'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/1376880913570043566'/><link rel='alternate' type='text/html' href='http://justinberke.blogspot.com/2010/04/attribution-assistant-toolsetplugin-for.html' title='Attribution Assistant: Toolset/Plugin for ArcMap 9.x'/><author><name>Justin</name><uri>http://www.blogger.com/profile/13405139779467188945</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VJ2U8mMqPfU/SoSptGXK8iI/AAAAAAAABOQ/qRpz6nqiK7k/S220/pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_VJ2U8mMqPfU/S9CxPztSVsI/AAAAAAAABqs/smqpTma78A4/s72-c/AttributionAssistant05_Icon.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4228793464107368822.post-7222888715449890708</id><published>2010-04-22T13:56:00.000-04:00</published><updated>2010-04-28T16:10:18.371-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GIS'/><category scheme='http://www.blogger.com/atom/ns#' term='VB'/><category scheme='http://www.blogger.com/atom/ns#' term='ArcObjects'/><category scheme='http://www.blogger.com/atom/ns#' term='coding'/><title type='text'>ArcObjects: Clear Selected Features</title><content type='html'>The following is the VB code to quickly selected features in ArcMap with ArcObjects.  This code will perform the same function as clicking the Clear Selected Features tool &lt;img border="0" src="http://4.bp.blogspot.com/_VJ2U8mMqPfU/S9Hb98UZQII/AAAAAAAABq0/Yyg3HszE3eA/s320/ArcObjects-ClearSelectedFeatures01-icon.gif" /&gt; on the ArcMap interface.&lt;br /&gt;&lt;br /&gt;There are two parts: the setup (&lt;code style="color: blue;"&gt;Dim&lt;/code&gt;/&lt;code style="color: blue;"&gt;Set&lt;/code&gt; instances), then clear the selection with a partial refresh followed by &lt;code&gt;pMap.ClearSelection&lt;/code&gt; (in that order).&amp;nbsp; This example is a command button that will run the method after a Click event:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;span style="color: blue;"&gt;Private Sub &lt;/span&gt;cmdClear_Click()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: blue;"&gt;Dim &lt;/span&gt;pMxDocument &lt;span style="color: blue;"&gt;As &lt;/span&gt;IMxDocument&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/code&gt;&lt;code&gt;&lt;span style="color: blue;"&gt;Dim &lt;/span&gt;&lt;/code&gt;&lt;code&gt;pMap &lt;span style="color: blue;"&gt;As &lt;/span&gt;IMap&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/code&gt;&lt;code&gt;&lt;span style="color: blue;"&gt;Dim &lt;/span&gt;&lt;/code&gt;&lt;code&gt;pActiveView &lt;span style="color: blue;"&gt;As &lt;/span&gt;IActiveView&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: blue;"&gt;Set &lt;/span&gt;pMxDocument = ThisDocument&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/code&gt;&lt;code&gt;&lt;span style="color: blue;"&gt;Set &lt;/span&gt;&lt;/code&gt;&lt;code&gt;pMap = pMxDocument.FocusMap&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/code&gt;&lt;code&gt;&lt;span style="color: blue;"&gt;Set &lt;/span&gt;&lt;/code&gt;&lt;code&gt;pActiveView = pMap&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pActiveView.PartialRefresh esriViewGeoSelection, &lt;span style="color: blue;"&gt;Nothing&lt;/span&gt;, &lt;span style="color: blue;"&gt;Nothing&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pMap.ClearSelection&lt;br /&gt;&lt;span style="color: blue;"&gt;End Sub&lt;/span&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4228793464107368822-7222888715449890708?l=justinberke.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://justinberke.blogspot.com/feeds/7222888715449890708/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4228793464107368822&amp;postID=7222888715449890708' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/7222888715449890708'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/7222888715449890708'/><link rel='alternate' type='text/html' href='http://justinberke.blogspot.com/2010/04/arcobjects-clear-selected-features.html' title='ArcObjects: Clear Selected Features'/><author><name>Justin</name><uri>http://www.blogger.com/profile/13405139779467188945</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VJ2U8mMqPfU/SoSptGXK8iI/AAAAAAAABOQ/qRpz6nqiK7k/S220/pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_VJ2U8mMqPfU/S9Hb98UZQII/AAAAAAAABq0/Yyg3HszE3eA/s72-c/ArcObjects-ClearSelectedFeatures01-icon.gif' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4228793464107368822.post-4448003071532400302</id><published>2010-04-20T23:49:00.028-04:00</published><updated>2010-04-28T16:11:11.367-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='app'/><category scheme='http://www.blogger.com/atom/ns#' term='tool'/><category scheme='http://www.blogger.com/atom/ns#' term='GIS'/><category scheme='http://www.blogger.com/atom/ns#' term='DIY'/><category scheme='http://www.blogger.com/atom/ns#' term='VB'/><category scheme='http://www.blogger.com/atom/ns#' term='customization'/><category scheme='http://www.blogger.com/atom/ns#' term='ArcObjects'/><category scheme='http://www.blogger.com/atom/ns#' term='efficiency'/><category scheme='http://www.blogger.com/atom/ns#' term='coding'/><title type='text'>GIS Desktop Customization</title><content type='html'>I developed and led a training seminar for FDEP's ArcDiscovery Sessions that discusses GIS Desktop customization.&amp;nbsp; Presented April 15, 2010 to 30 in-house participants and another 20 employees around the state via video conference, this topic is separated into two parts:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;the configuration of buttons and toolbars on the ArcMap interface&lt;/li&gt;&lt;li&gt;an introduction to object-oriented programming for custom GIS tools&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Below are the slides that were presented in the course, however a pdf tutorial accompanies the talk which provides step-by-step instruction on each topic discussed in the seminar.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;- &lt;b&gt;&lt;a href="http://docs.google.com/fileview?id=0B2PoR3Z1imR-ZDdjODQ2ZGMtMzE1Ni00YmU1LTgyNDQtY2RlMjM0N2YyODdi&amp;amp;hl=en"&gt;View the step-by-step tutorial&lt;/a&gt;&lt;/b&gt; -&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;iframe frameborder="0" height="342" src="http://docs.google.com/present/embed?id=dc8kqrf3_196ck575pfn&amp;amp;interval=5" width="410"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4228793464107368822-4448003071532400302?l=justinberke.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://justinberke.blogspot.com/feeds/4448003071532400302/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4228793464107368822&amp;postID=4448003071532400302' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/4448003071532400302'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/4448003071532400302'/><link rel='alternate' type='text/html' href='http://justinberke.blogspot.com/2010/04/gis-desktop-customization.html' title='GIS Desktop Customization'/><author><name>Justin</name><uri>http://www.blogger.com/profile/13405139779467188945</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VJ2U8mMqPfU/SoSptGXK8iI/AAAAAAAABOQ/qRpz6nqiK7k/S220/pic.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4228793464107368822.post-312598123837000363</id><published>2010-04-05T17:55:00.002-04:00</published><updated>2010-04-07T09:33:10.629-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GIS'/><category scheme='http://www.blogger.com/atom/ns#' term='VB'/><category scheme='http://www.blogger.com/atom/ns#' term='data manipulation'/><category scheme='http://www.blogger.com/atom/ns#' term='math'/><category scheme='http://www.blogger.com/atom/ns#' term='efficiency'/><category scheme='http://www.blogger.com/atom/ns#' term='coding'/><title type='text'>Geometric Field Calculations</title><content type='html'>There are a number of common geometric field calculations that I use on a regular basis.&amp;nbsp; Calculating polygon area &amp;amp; primiter, linear/arc/path distance, or feature centroid coordinates are surprisingly simple to obtain and can prove to be very powerful information.&lt;br /&gt;&lt;br /&gt;If you're working in a geodatabase, many of these will be automatically calculated and updated as features are edited, however these must be re-calculated using the Field Calculator when working with shapefiles.&amp;nbsp; Here's how:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Open a layer's attribute table &lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;From the Options menu at the bottom of the attribute table window choose &lt;b&gt;Add Field...&lt;/b&gt; if some kind of area/length/etc. field does not already exist.&amp;nbsp;&amp;nbsp; &lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Name the new field and choose Double for its type.&lt;br /&gt;&lt;br /&gt;Again, if the layer is in a geodatabase, the SHAPE_AREA and SHAPE_LENGTH fields will be available and updated.&amp;nbsp; These fields will be present in a shapefile format if they were exported from a geodatabase coverage, but you will need to re-calculate the values.&amp;nbsp; Don't bother adding a new field if this is the case - just update the existing fields using the following steps&lt;/li&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_VJ2U8mMqPfU/S7pT358Za-I/AAAAAAAABoc/vC64KKI6vgY/s1600/GeometricFieldCalculations01-AddField.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_VJ2U8mMqPfU/S7pT358Za-I/AAAAAAAABoc/vC64KKI6vgY/s320/GeometricFieldCalculations01-AddField.gif" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Right click on the appropriate field (of type Double) and choose Field Calculator &lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Check the Advanced option box&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&amp;nbsp;Use the following code snippets to calculate the appropriate type of geometric information for each feature.&amp;nbsp; I'll calculate polygon Area for this example, however I can also calculate perimeter or centroids, etc.&lt;br /&gt;&lt;br /&gt;Paste the code (see below) in the Pre-Logic VBA Script Code box, and type the object (the variable that is created in the first line: in this case it's &lt;b&gt;dblArea&lt;/b&gt;) in bottom most text box.&amp;nbsp; Click OK when finished&lt;/li&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_VJ2U8mMqPfU/S7pW9bcVJfI/AAAAAAAABok/1AKz_0Ky_mM/s1600/GeometricFieldCalculations02-Calculate.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_VJ2U8mMqPfU/S7pW9bcVJfI/AAAAAAAABok/1AKz_0Ky_mM/s320/GeometricFieldCalculations02-Calculate.gif" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&amp;nbsp;That's it!&lt;/li&gt;&lt;/ul&gt;Below are code snippets for various types of geometric calculations.&amp;nbsp; Be sure to paste the corresponding object created in the first line (dblArea/dblPerimeter/etc.) into the text box at the bottom of the Field Calculator.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;&lt;b&gt;Area&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Dim dblArea as Double&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Dim pArea as IArea&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Set pArea = [shape]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;dblArea = pArea.area&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;&lt;b&gt;Perimeter&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Dim dblPerimeter as Double&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Dim pCurve as ICurve&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Set pCurve = [shape]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;dblPerimeter = pCurve.Length&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;&lt;b&gt;Length&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Dim dblLength as Double&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Dim pCurve as ICurve&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Set pCurve = [shape]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;dblLength = pCurve.Length&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;&lt;b&gt;X-coordinate of a point&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Dim dblX As Double&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Dim pPoint As IPoint&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Set pPoint = [Shape]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;dblX = pPoint.X&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;&lt;b&gt;Y-coordinate of a point&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Dim dblY As Double&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Dim pPoint As IPoint&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Set pPoint = [Shape]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;dblY = pPoint.Y&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;&lt;b&gt;X-coordinate of a polygon centroid&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Dim dblX As Double&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Dim pArea As IArea&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Set pArea = [Shape]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;dblX = pArea.Centroid.X&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;&lt;b&gt;Y-coordinate of a polygon centroid&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Dim dblY As Double&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Dim pArea As IArea&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Set pArea = [Shape]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;dblY = pArea.Centroid.Y&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Read more in these selected ESRI's articles:&lt;br /&gt;&amp;nbsp;- &lt;a href="http://webhelp.esri.com/arcgisdesktop/9.2/index.cfm?TopicName=Making_field_calculations"&gt;Making Field Calculations&lt;/a&gt;&lt;br /&gt;&amp;nbsp;- &lt;a href="http://www.esri.com/news/arcuser/0405/files/fieldcalc_1.pdf"&gt;The Field Calculator Unleashed&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4228793464107368822-312598123837000363?l=justinberke.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://justinberke.blogspot.com/feeds/312598123837000363/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4228793464107368822&amp;postID=312598123837000363' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/312598123837000363'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/312598123837000363'/><link rel='alternate' type='text/html' href='http://justinberke.blogspot.com/2010/04/geometric-field-calculations.html' title='Geometric Field Calculations'/><author><name>Justin</name><uri>http://www.blogger.com/profile/13405139779467188945</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VJ2U8mMqPfU/SoSptGXK8iI/AAAAAAAABOQ/qRpz6nqiK7k/S220/pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_VJ2U8mMqPfU/S7pT358Za-I/AAAAAAAABoc/vC64KKI6vgY/s72-c/GeometricFieldCalculations01-AddField.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4228793464107368822.post-7900589899130377889</id><published>2010-03-17T19:19:00.025-04:00</published><updated>2010-05-10T13:24:44.440-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='symbology'/><category scheme='http://www.blogger.com/atom/ns#' term='GIS'/><category scheme='http://www.blogger.com/atom/ns#' term='DIY'/><category scheme='http://www.blogger.com/atom/ns#' term='cartography'/><category scheme='http://www.blogger.com/atom/ns#' term='projection'/><category scheme='http://www.blogger.com/atom/ns#' term='Remote Sensing'/><category scheme='http://www.blogger.com/atom/ns#' term='imagery'/><title type='text'>Georeferencing / Georectification / Geometric Correction in ArcMap</title><content type='html'>I've done some geometric correction using other software packages, but have not yet tried to do it in ArcMap.&amp;nbsp; It turns out that there's a pretty small learning curve in the world of georeferencing in ArcMap.&amp;nbsp; I recommend simply turning on the Georeferencing toolbar and playing around with the hand full of tools that it holds.&amp;nbsp; All of the most useful tools are hidden away in either the Georeferencing menu on the left of the toolbar or in the small menu of three manual alteration tools to the right of drop down menu of selectable layers.&amp;nbsp; In the hour or so that I have been attempting to georeference a couple images, I already want to pull the tools out of the drop down menus and place them on the main toolbar for faster access.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_VJ2U8mMqPfU/S6EsHHMZUPI/AAAAAAAABjM/8nyhuEMY74U/s1600-h/georeferencing01-menus.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://1.bp.blogspot.com/_VJ2U8mMqPfU/S6EsHHMZUPI/AAAAAAAABjM/8nyhuEMY74U/s400/georeferencing01-menus.gif" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;A screenshot of the Georeferencing toolbar in ArcMap&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;i&gt;&lt;b&gt;Turn on the Georeferencing toolbar:&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;To verify, turn on the Georeferenceing toolbar by either right clicking in empty gray space beside tool bars/file menus at the top of the ArcMap window, or by going to Tools :: Customize and on the Toolbars tab, place a check mark in the box next to the Georeferencing toolbar option (then click Close).&amp;nbsp; The toolbar (see above) will appear. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;i&gt;&lt;b&gt;Add imagery:&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;Use the Add Data button &lt;img border="0" src="http://2.bp.blogspot.com/_VJ2U8mMqPfU/S6E3ewRzxqI/AAAAAAAABjs/-G2C5XTC0Pc/s320/georeferencing02-add_data_button.gif" /&gt; to add a raw, unreferenced images (.jpg, .png, .bmp, etc.) to an ArcMap project.&amp;nbsp; Expect to receive an "Unknown Spatial Reference" message that explains that the image cannot be projected.&amp;nbsp; If there are spatial layers already added to the project, the images will probably be displayed somewhere off in a corner.&amp;nbsp; Right click on the image layer in the table of contents and select Zoom to Layer to view it.&lt;br /&gt;&lt;br /&gt;Here are a few good resources to consider to obtain imagery:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://data.labins.org/"&gt;LABINS (Land Boundary Information System)&lt;/a&gt;: DOQQ imagery, high resolution imagery, Digital Elevation Models, DRGs, and other spatial datasets for the state of Florida.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.uflib.ufl.edu/maps/"&gt;Map &amp;amp; Imagery Library at UF&lt;/a&gt;:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;(&lt;a href="http://smathersnt13.uflib.ufl.edu/fta2/viewer.htm"&gt;Search by interactive map&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;a href="http://libraries.mit.edu/gis/data/datalinks/statedataweb.html"&gt;MIT's list of spatial data providers by state&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;i&gt;&lt;b&gt;Georeferencing:&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;I have access to rectified imagery and other reference datasets (transportation networks, hydrography, etc.) so I'll use those to illustrate some techniques (very quickly and roughly).&amp;nbsp; I'll just be using aerial imagery from 2005-2009 and a coverage of State Routes.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Zoom to the area where the image should cover.&amp;nbsp; This example is looking at an area in Florida around Taylor Creek, just north of Lake Okeechobee:&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;iframe align="center" frameborder="0" height="350" marginheight="0" marginwidth="0" scrolling="no" src="http://maps.google.com/maps?hl=en&amp;amp;ie=UTF8&amp;amp;hq=&amp;amp;hnear=Tallahassee,+Leon,+Florida&amp;amp;t=h&amp;amp;ll=27.229295,-80.799294&amp;amp;spn=0.106847,0.145912&amp;amp;z=12&amp;amp;output=embed" width="425"&gt;&lt;/iframe&gt;&lt;/center&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Choose an image to manipulate from the Layer menu on the Georeferencing toolbar&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Since my .jpg image (in this case) is hiding down at the grid origin, somewhere in the Gulf of Mexico, I will have a hard time matching similar locations in the relation process.&amp;nbsp; Open the Georeferencing menu on the toolbar and select Fit to Display.&amp;nbsp; The image will shift into view and be resized to fill your map view.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Begin by using the three tools in the menu to the right of the Layer menu to roughly align the image:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Primarily, it seems that the images are rotated about 90° clockwise (north is pointing east). Use the Rotate tool &lt;img border="0" src="http://4.bp.blogspot.com/_VJ2U8mMqPfU/S6FNI5bBTcI/AAAAAAAABj0/ztmIHp-ri1g/s320/georeferencing03-RotateTool.gif" /&gt; to fix this. The original top of the raw JPEG is now facing west:&lt;br /&gt;(This can also be performed from the Georeferencing menu under Flip or Rotate :: Rotate Left)&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_VJ2U8mMqPfU/S6FNTxJ7x1I/AAAAAAAABj8/_RAsbOq_638/s1600-h/georeferencing04-rotate.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_VJ2U8mMqPfU/S6FNTxJ7x1I/AAAAAAAABj8/_RAsbOq_638/s320/georeferencing04-rotate.gif" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;Rotated the image 90° anti-clockwise so north&lt;br /&gt;(Click to enlarge images)&lt;/span&gt;&lt;/div&gt;&lt;ul&gt;&lt;ul&gt;&lt;li&gt;Next, use the Scale tool &lt;img border="0" src="http://3.bp.blogspot.com/_VJ2U8mMqPfU/S6FOl1k03DI/AAAAAAAABkE/RlEptttd64c/s320/georeferencing05-ScaleTool.gif" /&gt; to shrink the image a bit: &lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_VJ2U8mMqPfU/S6FOuuPFewI/AAAAAAAABkM/xHVIs6WBqlo/s1600-h/georeferencing06-scale.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_VJ2U8mMqPfU/S6FOuuPFewI/AAAAAAAABkM/xHVIs6WBqlo/s320/georeferencing06-scale.gif" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;Shrink the image with the scale too &lt;/span&gt;&lt;/div&gt;&lt;ul&gt;&lt;ul&gt;&lt;li&gt;Finally, use the shift tool &lt;img border="0" src="http://1.bp.blogspot.com/_VJ2U8mMqPfU/S6FP6Ku5W7I/AAAAAAAABkU/cAOY04Nyur8/s320/georeferencing07-ShiftTool.gif" /&gt; to move the image closer to its correct position:&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_VJ2U8mMqPfU/S6FQrOPXhxI/AAAAAAAABkc/YwKB6r534Ds/s1600-h/georeferencing08-shift.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_VJ2U8mMqPfU/S6FQrOPXhxI/AAAAAAAABkc/YwKB6r534Ds/s320/georeferencing08-shift.gif" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;Moved the image using the shift tool&lt;/span&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&amp;nbsp;Open the Link Table by clicking the button on the far right of the Georeferencing toolbar.&amp;nbsp; This will keep track of the control points that will be added in the next step.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Zoom in to a location that is easily distinguishable in the rectification image as well as any reference data.&amp;nbsp; Roadways are excellent references, especially when they intersect with each other or with a stream, etc.&amp;nbsp; A less effective reference feature can be a lake or stream, for example, because the shorelines can change over time.&amp;nbsp; Roadways often have less variation.&amp;nbsp; Local knowledge is very beneficial in these situations.&lt;br /&gt;&lt;br /&gt;Below is an example of a roadway intersection that is a decent enough reference point to use.&amp;nbsp; The red circle indicates where the control points will be placed:&lt;/li&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_VJ2U8mMqPfU/S6FkA0-ifqI/AAAAAAAABlQ/vUrToFDnhXo/s1600-h/georeferencing09-ControlPoints.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_VJ2U8mMqPfU/S6FkA0-ifqI/AAAAAAAABlQ/vUrToFDnhXo/s320/georeferencing09-ControlPoints.gif" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;(Broken GIF: the image should be animated &lt;br /&gt;to illustrate the two control point locations)&lt;/span&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Use the Add Control Points tool &lt;img border="0" src="http://2.bp.blogspot.com/_VJ2U8mMqPfU/S6FZYUgVwSI/AAAAAAAABks/9hm9Ep7_TOI/s320/georeferencing09-ControlPointsTool.gif" /&gt; to add pairs of control points.&amp;nbsp; The first click will represent the "from" location that will correspond to a point on the image that is being rectified (the black &amp;amp; white image in this case).&amp;nbsp; The second click will represent the "to" position, where the image will be moved or stretched.&amp;nbsp; This pair of control points creates a vector that is used to rotate, stretch, and skew the image.&lt;br /&gt;&lt;br /&gt;Add a few of these control points across the extent of the rectification image.&amp;nbsp; Each time a control point is completed, the information will appear in the Link Table, and the image will move (if the Auto Adjust option is checked in the Georeferencing menu).&lt;br /&gt;&lt;br /&gt;Note the Total RMS Error that is reported in the lower right corner of the Link Table window.&amp;nbsp; Root Mean Square Error is  "a measure of the difference between locations that are known and  locations that have been interpolated or digitized" (Heather Kennedy. 2000. &lt;a href="http://www.countyofdane.com/lio/pdf/GIS_Terminology.pdf"&gt;ESRI  Dictionary of GIS Terminology&lt;/a&gt;, ESRI Press, Redlands, CA.). In general, lower values are desirable.&amp;nbsp; Read more about &lt;a href="http://en.wikipedia.org/wiki/Root_mean_square_deviation"&gt;RMS Error&lt;/a&gt;.&lt;a href="http://en.wikipedia.org/wiki/Root_mean_square_deviation"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&amp;nbsp;It helps to turn layers on and off in the table of contents pane.&amp;nbsp; Another useful technique is to use the Swipe Layer tool &lt;img border="0" src="http://3.bp.blogspot.com/_VJ2U8mMqPfU/S6FbUidJkKI/AAAAAAAABk0/QJj9sVvzu5U/s320/georeferencing10-SwipeLayerTool.gif" /&gt; (found on the Effects toolbar).&amp;nbsp; Make sure that the image/layer/group layer is selected in the Effects toolbar selected layer menu, then select the Swipe Layer tool and click the map view.&amp;nbsp; Then simply click and drag the tool across a map to reveal lower layers on the map.&lt;/li&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_VJ2U8mMqPfU/S6Fdo8FA1II/AAAAAAAABk8/y48i4znJngE/s1600-h/georeferencing11-rectified.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_VJ2U8mMqPfU/S6Fdo8FA1II/AAAAAAAABk8/y48i4znJngE/s320/georeferencing11-rectified.gif" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;Image rectified with various control points&lt;/span&gt;&lt;/div&gt;&lt;blockquote&gt;&lt;div style="color: #660000;"&gt;&lt;b&gt;* Caution!  Changing the selected layer on the&lt;/b&gt;&lt;/div&gt;&lt;b style="color: #660000;"&gt;Georeferencing toolbar will remove any editing&lt;br /&gt;or work that has been done to an image. Use the&lt;br /&gt;following methods to preserve your referencing&lt;/b&gt;&lt;/blockquote&gt;&lt;span style="font-size: large;"&gt;&lt;i&gt;&lt;b&gt;Save image referencing:&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&amp;nbsp;From the Georeferencing menu, simply choose Update Georeferencing &lt;/li&gt;&lt;/ul&gt;This adds two files ( [image name].aux &amp;amp; &lt;a href="http://www.cryer.co.uk/file-types/j/jgw.htm"&gt;[image name].JGw&lt;/a&gt; ) to the directory where the image is located.&amp;nbsp; These two files are referenced when the image is added to a project,future&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;i&gt;&lt;b&gt;(Optional) Export image:&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;ul&gt;&lt;li&gt;&amp;nbsp;From the Georeferencing menu, choose Rectify to bring up the Save As dialog&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Change the Output Location (choose a folder or workspace), and change the name of the image if necessary.&amp;nbsp; The remaining parameters can be left with the default settings.&amp;nbsp; Click Save to continue.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Use the Add Data button &lt;img border="0" src="http://2.bp.blogspot.com/_VJ2U8mMqPfU/S6E3ewRzxqI/AAAAAAAABjs/-G2C5XTC0Pc/s320/georeferencing02-add_data_button.gif" /&gt; again to add the new image to the project, or distribute as necessary&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt;&lt;i&gt;&lt;b&gt;Remove null values:&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;After adding the image, you may notice a black box surrounding the image.&amp;nbsp; This is simply the blank space left when the new image was created from an image that was rotated slightly.&amp;nbsp; These null values have the value of 0 in the dataset and can be easily removed:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Right click on the image layer in the table of contents pane and choose Properties (or double click on the layer)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Navigate to the Symbology tab&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Place a check next to Display Background Value setting.&amp;nbsp; Ensure that 0 is the denoted value, and that the color selector is set to No Color.&amp;nbsp; Choose Apply or OK to continue&lt;/li&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;ul&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_VJ2U8mMqPfU/S6FijmJxv0I/AAAAAAAABlE/q0xbWFVEc_I/s1600-h/georeferencing12-nullvalues.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_VJ2U8mMqPfU/S6FijmJxv0I/AAAAAAAABlE/q0xbWFVEc_I/s320/georeferencing12-nullvalues.gif" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;Removing null values from the layer&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_VJ2U8mMqPfU/S6FlZMZp6MI/AAAAAAAABlY/e6_3-fWP2d8/s1600-h/georeferencing13-multi.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_VJ2U8mMqPfU/S6FlZMZp6MI/AAAAAAAABlY/e6_3-fWP2d8/s320/georeferencing13-multi.gif" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;Several georeferenced images &lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;One problem remains.&amp;nbsp; There are still some black outlines on the edges of these images.&amp;nbsp; Those areas are inherited from the original raw images.&amp;nbsp; These can be handled in two ways;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;The images can be cropped from the original JPEG files before they are georeferenced to remove the outlines.&amp;nbsp; Be sure to make copies of the original images before any editing is applied.&lt;/li&gt;&lt;li&gt;Manipulate the geographic extent of each layer:&lt;/li&gt;&lt;/ol&gt;&lt;ul&gt;&lt;ul&gt;&lt;li&gt;Open the layer properties for an image&lt;/li&gt;&lt;li&gt;Navigate to the Extent tab&lt;/li&gt;&lt;li&gt;Change the "Set the extent to" option to "&lt;b&gt;a custom extent entered below&lt;/b&gt;"&lt;/li&gt;&lt;li&gt;Increase (Left &amp;amp; Bottom) or decrease (Top &amp;amp; Right) the Visible Extent values by small intervals and click Apply to view the results.&lt;br /&gt;&lt;br /&gt;* Reset the values if necessary by changing the "Set the extent to" option to "&lt;b&gt;the default extent of this layer&lt;/b&gt;"&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;ol&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_VJ2U8mMqPfU/S6IaR6IPa4I/AAAAAAAABl4/LzB1fctwg6E/s1600-h/georeferencing13-multiB.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_VJ2U8mMqPfU/S6IaR6IPa4I/AAAAAAAABl4/LzB1fctwg6E/s320/georeferencing13-multiB.gif" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;Several georeferenced images with altered geographic extents&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;If this is still not suitable, you may need to pre-process the image with some other graphics software.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: left;"&gt;More information:&lt;/div&gt;&lt;div style="text-align: left;"&gt;&lt;a href="http://webhelp.esri.com/arcgisdesktop/9.2/index.cfm?TopicName=Georeferencing_a_raster_dataset"&gt;ESRI: Georeferencing a raster dataset&lt;/a&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4228793464107368822-7900589899130377889?l=justinberke.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://justinberke.blogspot.com/feeds/7900589899130377889/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4228793464107368822&amp;postID=7900589899130377889' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/7900589899130377889'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/7900589899130377889'/><link rel='alternate' type='text/html' href='http://justinberke.blogspot.com/2010/03/georeferencing-georectification.html' title='Georeferencing / Georectification / Geometric Correction in ArcMap'/><author><name>Justin</name><uri>http://www.blogger.com/profile/13405139779467188945</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VJ2U8mMqPfU/SoSptGXK8iI/AAAAAAAABOQ/qRpz6nqiK7k/S220/pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_VJ2U8mMqPfU/S6EsHHMZUPI/AAAAAAAABjM/8nyhuEMY74U/s72-c/georeferencing01-menus.gif' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4228793464107368822.post-4033999145538771369</id><published>2010-02-27T00:06:00.003-05:00</published><updated>2010-02-27T00:15:33.030-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VB'/><category scheme='http://www.blogger.com/atom/ns#' term='customization'/><category scheme='http://www.blogger.com/atom/ns#' term='ArcObjects'/><category scheme='http://www.blogger.com/atom/ns#' term='coding'/><title type='text'>Loop Through Controls in VB</title><content type='html'>&lt;a href="http://lh5.ggpht.com/_VJ2U8mMqPfU/S4ayNk-wl3I/AAAAAAAABig/l88jFqj_v7w/s1600/loopthroughcontrols01-form.gif" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://lh5.ggpht.com/_VJ2U8mMqPfU/S4ayNk-wl3I/AAAAAAAABig/l88jFqj_v7w/s320/loopthroughcontrols01-form.gif" /&gt;&lt;/a&gt;&lt;br /&gt;A little info about the tool to the left that I'm building then I'll get to the point:&lt;br /&gt;&lt;br /&gt;This Attribution Assistant (screenshot of version 1) allows a user to quickly apply attribution to selected features in ArcMap.&amp;nbsp; Say you're attributing a huge dataset of streams (my current project) and they need to be designated either a "river," a "stream," or a "canal."&amp;nbsp; One can open an editing session and type in the values as they're hilighted, or for several at a time (a bit more efficient) a user can right click on the in the attribute table, and use the Field Calculator to do some en-masse attribution, but she or he will still need to change that one value over and over again.&amp;nbsp; Back and forth... Kill me.&lt;br /&gt;&lt;br /&gt;Instead, select the layer of interest, then select the field that will hold the attribution, and add up to 16 text boxes for possible values (it starts with just one row, but the screenshot is expanded to 16 for the sake of screenshots...).&amp;nbsp; Then select some features and click the calculator button that corresponds with the proper value.&amp;nbsp; That's it.&amp;nbsp; One click attribution.&lt;br /&gt;&lt;br /&gt;The check boxes to the right disables the corresponding text box and delete button so a user doesn't accidentally change/remove values.&amp;nbsp; Here's the problem though.&amp;nbsp; For version 2, there will be a "Check All" check box at the top that will let the user - that's right - select/unselect all check boxes at once.&amp;nbsp; The best way to do this is to loop through each check box control and set its value to False.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;i&gt;&lt;b&gt;Easier example&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;span style="font-size: large;"&gt;&lt;i&gt;&lt;b&gt; to begin:&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;All text boxes should be reset when the the dataset is changed or the form is "reset" for other possible reasons. &lt;/li&gt;&lt;/ul&gt;Originally, the Reset procedure/subroutine had 16 lines which manually erase each text box:&lt;br /&gt;&lt;br /&gt;&lt;div style="background-color: white;"&gt;&lt;code&gt;&lt;span style="color: green;"&gt;‘Reset all text boxes to null or&amp;nbsp; “”&lt;/span&gt;&lt;br /&gt;txtValue01.Text = ""&lt;br /&gt;txtValue02.Text = ""&lt;br /&gt;txtValue03.Text = ""&lt;br /&gt;txtValue04.Text = ""&lt;br /&gt;txtValue05.Text = ""&lt;br /&gt;txtValue06.Text = ""&lt;br /&gt;txtValue07.Text = ""&lt;br /&gt;txtValue08.Text = ""&lt;br /&gt;txtValue09.Text = ""&lt;br /&gt;txtValue10.Text = ""&lt;br /&gt;txtValue11.Text = ""&lt;br /&gt;txtValue12.Text = ""&lt;br /&gt;txtValue13.Text = ""&lt;br /&gt;txtValue14.Text = ""&lt;br /&gt;txtValue15.Text = ""&lt;br /&gt;txtValue16.Text = ""&lt;/code&gt;&lt;/div&gt;&lt;br /&gt;This works, but it's lame.&amp;nbsp; Here's a better way, explained below: &lt;br /&gt;&lt;br /&gt;&lt;div style="background-color: white;"&gt;&lt;code&gt;&lt;span style="color: green;"&gt;‘This is faster&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;Dim&lt;/span&gt; cControl &lt;span style="color: blue;"&gt;As&lt;/span&gt; Control&lt;br /&gt;&lt;span style="color: blue;"&gt;For Each&lt;/span&gt; cControl &lt;span style="color: blue;"&gt;In&lt;/span&gt; Me.Controls&lt;br /&gt;&lt;span style="color: green;"&gt;&lt;span style="color: white;"&gt;........&lt;/span&gt;'Look for text boxes only&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&lt;span style="color: white;"&gt;........&lt;/span&gt;If&lt;/span&gt; TypeName(cControl) = "TextBox" &lt;span style="color: blue;"&gt;Then&lt;/span&gt;&lt;br /&gt;&lt;span style="color: white;"&gt;............&lt;/span&gt;cControl.Text = ""&lt;br /&gt;&lt;span style="color: blue;"&gt;&lt;span style="color: white;"&gt;....&lt;/span&gt;End If&lt;/span&gt;&lt;/code&gt;&lt;code&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;Next&lt;/span&gt; cControl&lt;/code&gt;&lt;/div&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;[Be sure to remove the dots (&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;....&lt;/span&gt;) used to format the above code]&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;- Start by creating an object named cControl (or whatever) As a Control.&lt;br /&gt;- Make a For Each loop that will loop/search through all controls (buttons, text boxes, etc. see my &lt;a href="http://justinberke.blogspot.com/2009/09/vb-arcobjects-cheat-sheet.html"&gt;VB Cheat Sheet&lt;/a&gt;) in the form.&lt;br /&gt;- Begin to target which specific controls you want to change.&amp;nbsp; In this case all text boxes in the form should be changed, but if there were more text boxes, you can add more parameters to a query.&amp;nbsp; For instance, all text boxes with a certain .Tag or .Name.&amp;nbsp; Use &lt;a href="http://msdn.microsoft.com/en-us/library/wz3k228a%28VS.80%29.aspx"&gt;logic operators&lt;/a&gt; (like And, Or, etc.) to add to the query.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;i&gt;&lt;b&gt;A (just slightly) more difficult example:&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I also want to set .Tabstop = False for some of the text boxes so a user can hit the tab key to move the cursor to the next available text box.&amp;nbsp; The problem is that I don't want the user to tab to a box that is out of view. (I cheated.&amp;nbsp; When the form initializes, there seems to be only one row of attribution controls, but there are 16.&amp;nbsp; The form just gets bigger and the next row of controls are initialized.&amp;nbsp; They're really there the whole time though.)&lt;br /&gt;&lt;br /&gt;So there's some code to take care of turning the .Tabstop property on, but let's just focus on turning that off as well.&amp;nbsp; I'll also include another parameter in the query to find the exact controls, highlighted below:&lt;br /&gt;&lt;br /&gt;&lt;div style="background-color: white;"&gt;&lt;code&gt;&lt;span style="color: green;"&gt;‘Loop through controls&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;Dim&lt;/span&gt; cControl &lt;span style="color: blue;"&gt;As&lt;/span&gt; Control&lt;br /&gt;&lt;span style="color: blue;"&gt;For Each&lt;/span&gt; cControl &lt;span style="color: blue;"&gt;In&lt;/span&gt; Me.Controls&lt;br /&gt;&lt;span style="color: green;"&gt;&lt;span style="color: white;"&gt;........&lt;/span&gt;'Look for specific text boxes&lt;span style="color: white;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&lt;span style="color: white;"&gt;........&lt;/span&gt;If&lt;/span&gt; TypeName(cControl) = "TextBox" &lt;span style="background-color: yellow; color: blue;"&gt;And _&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;div style="background-color: white;"&gt;&lt;code&gt;&lt;span style="color: blue;"&gt;&lt;span style="color: white;"&gt;............&lt;/span&gt;&lt;span style="background-color: yellow; color: black;"&gt;cControl.Name &lt;/span&gt;&lt;span style="background-color: yellow;"&gt;Like&lt;/span&gt;&lt;span style="color: black;"&gt;&lt;span style="background-color: yellow;"&gt; "txtValue*"&lt;/span&gt; &lt;/span&gt;Then&lt;/span&gt;&lt;br /&gt;&lt;span style="color: white;"&gt;............&lt;/span&gt;cControl.Text = ""&lt;span style="color: white;"&gt;&lt;/span&gt;&lt;/code&gt;&lt;/div&gt;&lt;div style="background-color: white;"&gt;&lt;code&gt;&lt;span style="color: white;"&gt;............&lt;/span&gt;&lt;span style="background-color: yellow;"&gt;cControl.Tabstop = &lt;/span&gt;&lt;/code&gt;&lt;code style="background-color: yellow;"&gt;&lt;span style="color: blue;"&gt;False&lt;/span&gt;&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt; &lt;span style="color: blue;"&gt;&lt;span style="color: white;"&gt;....&lt;/span&gt;End If&lt;/span&gt;&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;Next&lt;/span&gt; cControl&lt;/code&gt;&lt;/div&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;[Be sure to remove the dots (&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;....&lt;/span&gt;) used to format the above code]&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4228793464107368822-4033999145538771369?l=justinberke.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://justinberke.blogspot.com/feeds/4033999145538771369/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4228793464107368822&amp;postID=4033999145538771369' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/4033999145538771369'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/4033999145538771369'/><link rel='alternate' type='text/html' href='http://justinberke.blogspot.com/2010/02/loop-through-controls-in-vb.html' title='Loop Through Controls in VB'/><author><name>Justin</name><uri>http://www.blogger.com/profile/13405139779467188945</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VJ2U8mMqPfU/SoSptGXK8iI/AAAAAAAABOQ/qRpz6nqiK7k/S220/pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_VJ2U8mMqPfU/S4ayNk-wl3I/AAAAAAAABig/l88jFqj_v7w/s72-c/loopthroughcontrols01-form.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4228793464107368822.post-5102080664646073608</id><published>2010-02-19T11:10:00.001-05:00</published><updated>2010-02-20T00:31:04.391-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='symbology'/><category scheme='http://www.blogger.com/atom/ns#' term='vector'/><category scheme='http://www.blogger.com/atom/ns#' term='GIS'/><category scheme='http://www.blogger.com/atom/ns#' term='fail'/><title type='text'>Gaps in Polyline Coverages / Vector Linear Direction</title><content type='html'>I'm editing a large statewide line coverage of streams across the state of Florida based on &lt;a href="http://nhd.usgs.gov/"&gt;24k NHD Flowlines&lt;/a&gt;. I have been continually coming across what appear to be small gaps in the coverage, however zooming in (even to 1:1 or further) does not reveal disconnected features.&amp;nbsp; Setting snapping parameters and repositioning the endpoints in an editing session doesn't help either.&lt;br /&gt;&lt;br /&gt;Here's a screenshot with an enlargement of the gap to the left.&amp;nbsp; The instances of the gap are subtle, and even more so in screenshot below (click to enlarge):&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_VJ2U8mMqPfU/S32tw9ljEkI/AAAAAAAABgs/D63GPX28dJw/s1600-h/LineDirectins01-map.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="259" src="http://2.bp.blogspot.com/_VJ2U8mMqPfU/S32tw9ljEkI/AAAAAAAABgs/D63GPX28dJw/s320/LineDirectins01-map.gif" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;A gap between two segments in a polyline coverage with&lt;br /&gt;an enlargement of the issue to the left&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;It turns out that the line segments do in fact intersect and their ends are connected.&amp;nbsp; The problem is that the vector feature directions may not be aligned properly.&amp;nbsp; Although it is possible for two stream segments to flow away from each other (via confluence at usually obtuse angles), when the directions of two line segments are converging (see below) a small gap appears between the two features which is usually only one pixel wide.&lt;br /&gt;&lt;br /&gt;There's a bit more to the distance and direction parameters that polyline features preserve in a vector dataset. A tertiary "from-to" designation is included in the bearing, although it's not always apparent at first glance (nor is it always needed, though it's a good idea to consider to avoid future problems).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;i&gt;&lt;b&gt;Vector Linear Direction:&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;As an illustration, two simple line segments are created.&amp;nbsp; Line 1 is digitized from west to east / left to right, and Line 2 is digitized from east to west, however it isn't immediately apparent:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_VJ2U8mMqPfU/S32zlOy3XDI/AAAAAAAABg0/zzJvnEfQEDk/s1600-h/LineDirections02.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_VJ2U8mMqPfU/S32zlOy3XDI/AAAAAAAABg0/zzJvnEfQEDk/s320/LineDirections02.gif" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;By viewing a line's vertices (double click on a line segment using the edit tool &lt;img border="0" src="http://2.bp.blogspot.com/_VJ2U8mMqPfU/S36mI-2iN8I/AAAAAAAABhk/pRXQMbWHc64/s320/LineDirections06-EditTool.gif" /&gt; in an edit session to expose its sketch) one can view the from-to direction orientation of a line feature.&amp;nbsp; Initial / first, and intermediate vertices are green, and the final / last vertex is red; which indicate from-to direction: &lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_VJ2U8mMqPfU/S32zmd1sGFI/AAAAAAAABg8/qz-m0z9Pa7s/s1600-h/LineDirections03.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_VJ2U8mMqPfU/S32zmd1sGFI/AAAAAAAABg8/qz-m0z9Pa7s/s320/LineDirections03.gif" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;The from-to direction of a line can be flipped easily: select a line, expose its sketch (double click using the edit tool), then right click the sketch and choose Flip from the context menu.&lt;br /&gt;&lt;br /&gt;It's easier to visualize flow direction of a linear network by putting arrow heads on the end of each line:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_VJ2U8mMqPfU/S32znFJCxOI/AAAAAAAABhE/R2SrQ7vqNuc/s1600-h/LineDirections04.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_VJ2U8mMqPfU/S32znFJCxOI/AAAAAAAABhE/R2SrQ7vqNuc/s320/LineDirections04.gif" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;i&gt;&lt;b&gt;Arrowhead Symbology:&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Open the "Symbol Selector" dialog for a line coverage (change the symbol properties):&lt;/li&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_VJ2U8mMqPfU/S320tcTvLPI/AAAAAAAABhM/Uup-TBO6Xbc/s1600-h/LineDirections04a.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_VJ2U8mMqPfU/S320tcTvLPI/AAAAAAAABhM/Uup-TBO6Xbc/s320/LineDirections04a.gif" /&gt;&lt;/a&gt;&amp;nbsp; &lt;/div&gt;&lt;ul&gt;&lt;li&gt;Click &lt;b&gt;Properties&lt;/b&gt; to open the Symbol Property Editor&lt;/li&gt;&lt;li&gt;Change the &lt;b&gt;Type&lt;/b&gt; to "Catrographic Line Symbol"&lt;/li&gt;&lt;li&gt;Navigate to the &lt;b&gt;Line Properties&lt;/b&gt; tab&lt;/li&gt;&lt;li&gt;Select the middle, right facing arrow from &lt;b&gt;Line Decorations&lt;/b&gt; area and click OK until you're back at your map:&lt;/li&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_VJ2U8mMqPfU/S3219GF333I/AAAAAAAABhU/JDLr2Nhav5I/s1600-h/LineDirections04b.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_VJ2U8mMqPfU/S3219GF333I/AAAAAAAABhU/JDLr2Nhav5I/s320/LineDirections04b.gif" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;The default symbology is a bit bulky so play around with different settings and characters to represent arrowheads or other symbols at either or both ends of your line features.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;i&gt;&lt;b&gt;Linear Network Interactions:&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;So the single pixel-wide gap seems to appear only with converging line segments, and not with diverging, or in-line interactions:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_VJ2U8mMqPfU/S36zBF6vUyI/AAAAAAAABiI/2DknjcEK2aM/s1600-h/LineDirections05-examples.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_VJ2U8mMqPfU/S36zBF6vUyI/AAAAAAAABiI/2DknjcEK2aM/s320/LineDirections05-examples.gif" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4228793464107368822-5102080664646073608?l=justinberke.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://justinberke.blogspot.com/feeds/5102080664646073608/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4228793464107368822&amp;postID=5102080664646073608' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/5102080664646073608'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/5102080664646073608'/><link rel='alternate' type='text/html' href='http://justinberke.blogspot.com/2010/02/gaps-in-polyline-coverages-vector.html' title='Gaps in Polyline Coverages / Vector Linear Direction'/><author><name>Justin</name><uri>http://www.blogger.com/profile/13405139779467188945</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VJ2U8mMqPfU/SoSptGXK8iI/AAAAAAAABOQ/qRpz6nqiK7k/S220/pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_VJ2U8mMqPfU/S32tw9ljEkI/AAAAAAAABgs/D63GPX28dJw/s72-c/LineDirectins01-map.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4228793464107368822.post-7952604569162212345</id><published>2010-02-07T01:43:00.001-05:00</published><updated>2010-04-08T09:51:59.694-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='art'/><category scheme='http://www.blogger.com/atom/ns#' term='DIY'/><category scheme='http://www.blogger.com/atom/ns#' term='computer bricka-brack'/><category scheme='http://www.blogger.com/atom/ns#' term='web-tech'/><category scheme='http://www.blogger.com/atom/ns#' term='music production'/><category scheme='http://www.blogger.com/atom/ns#' term='efficiency'/><title type='text'>Challenges of February Album Writing Month</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://28.media.tumblr.com/avatar_1878c86d9d66_128.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://28.media.tumblr.com/avatar_1878c86d9d66_128.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;February Album Writing Month is a challenge to write and record 14 songs in 28 days.&amp;nbsp; This is quite a feat in itself, however the collective of artists with whom I have joined live hundreds of miles apart!&amp;nbsp; The solution is a (so far) effective integration of web technology, project management, discussion, collaboration.&amp;nbsp; Somehow, we have found enough time to cram some creativity in there.&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Discussion and Collaboration:&lt;/b&gt;&lt;br /&gt;E-mail is the main form of communication however many of the members meet in a group chat session to discuss various topics ranging from media about material to management techniques.&amp;nbsp; These are assisted by the use of a private &lt;a href="http://groups.google.com/"&gt;Google Group&lt;/a&gt;, which we use to group e-mail topics and discussions together, an also to store web pages to jot down notes, lyrics, and other information about songs, and other information.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Project Management:&lt;/b&gt;&lt;br /&gt;The Google Group is a very important tool to keep ideas flowing together smoothly, however key bits of information can get easily lost in this massive amount of flowing thoughts; especially if a member misses a message, or cannot keep up to date with every discussion.&amp;nbsp; A more specific collaborative table of information was created using a Google Docs spreadsheet to track the process of individual songs that are in various stages of being created.&amp;nbsp; Take a look below:&lt;br /&gt;&lt;br /&gt;&lt;iframe frameborder="0" height="500" src="http://spreadsheets.google.com/pub?key=tHn8atR_hprPvR7qop2zdDw&amp;amp;single=true&amp;amp;gid=0&amp;amp;output=html&amp;amp;widget=true" width="400"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Web Technology:&lt;/b&gt;&lt;br /&gt;Many thanks are given to Google for providing such power and effective tools, however there's still more to this endeavor.&amp;nbsp; The nature of internet recording projects introduces a problem of sending content (numerous large .wav files).&amp;nbsp; We have been using a private FTP site to house the final cuts of each contributing part of a song to be mixed at the end of the month, however &lt;a href="http://drop.io/"&gt;drop.io&lt;/a&gt; is used to post intermediate audio tracks (loops, samples, ideas, grooves, individual cuts, etc.) to quickly reference for writing and recording sessions:&lt;br /&gt;&lt;br /&gt;&lt;embed allowfullscreen="true" allowscriptaccess="always" height="275" src="http://blip.tv/play/g6RVgYu%2BVwI" type="application/x-shockwave-flash" width="400"&gt;&lt;/embed&gt; &lt;br /&gt;&lt;br /&gt;In addition, several members are posting thoughts and musings about the process in our blog: &lt;a href="http://thesegnarlybeasts.tumblr.com/"&gt;TheseGnarlyBeasts.tumblr.com&lt;/a&gt;.&amp;nbsp; As the recording for each song is completed, we intend to post minute-long raw mixdown samples here.&amp;nbsp; The final album will be released free of charge via &lt;a href="http://bandcamp.com/"&gt;bandcamp&lt;/a&gt; (also see &lt;a href="http://thesegnarlybeasts.bandcamp.com/"&gt;TheseGnarlyBeasts.bandcamp.com&lt;/a&gt;):&lt;br /&gt;&lt;br /&gt;&lt;embed allowfullscreen="true" allowscriptaccess="always" flashvars="guid=iIOW858f&amp;amp;width=400&amp;amp;height=224&amp;amp;qc_publisherId=p-18-mFEk4J448M" height="224" src="http://v.wordpress.com/wp-content/plugins/video/flvplayer.swf?ver=1.15" title="85232548_28831fc598_orig" type="application/x-shockwave-flash" width="400"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;I have been streaming my recording sessions live on the web via &lt;a href="http://justin.tv/justinberke"&gt;justin.tv/justinberke&lt;/a&gt;.&amp;nbsp; Each time I start a session, I post a link to my friends via Twitter &amp;amp; Facebook, and justin.tv automatically posts a bulletin on MySpace.&amp;nbsp; This allows any of my friends, or other fellow Beasts to tune in and check out how each drum track or other portion of recording/mixing is progressing.&lt;br /&gt;&lt;br /&gt;These Gnarly Beasts draw upon a plethora of technological advancements to assist in making this daunting challenge possible.&amp;nbsp; A combined management effort from all members ensures that these various tools work effectively to facilitate a continuous flow of creativity and collaboration all month long.&amp;nbsp; Look for an additional link to the full album in the first week of March.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4228793464107368822-7952604569162212345?l=justinberke.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://justinberke.blogspot.com/feeds/7952604569162212345/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4228793464107368822&amp;postID=7952604569162212345' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/7952604569162212345'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/7952604569162212345'/><link rel='alternate' type='text/html' href='http://justinberke.blogspot.com/2010/02/challenges-of-february-album-writing.html' title='Challenges of February Album Writing Month'/><author><name>Justin</name><uri>http://www.blogger.com/profile/13405139779467188945</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VJ2U8mMqPfU/SoSptGXK8iI/AAAAAAAABOQ/qRpz6nqiK7k/S220/pic.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4228793464107368822.post-7404401387528971020</id><published>2010-01-26T00:01:00.003-05:00</published><updated>2010-01-26T16:19:36.355-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='interpolation'/><category scheme='http://www.blogger.com/atom/ns#' term='GIS'/><category scheme='http://www.blogger.com/atom/ns#' term='visualization'/><category scheme='http://www.blogger.com/atom/ns#' term='research'/><category scheme='http://www.blogger.com/atom/ns#' term='hydrography/hydrology'/><category scheme='http://www.blogger.com/atom/ns#' term='Remote Sensing'/><category scheme='http://www.blogger.com/atom/ns#' term='modeling'/><category scheme='http://www.blogger.com/atom/ns#' term='imagery'/><category scheme='http://www.blogger.com/atom/ns#' term='geography'/><category scheme='http://www.blogger.com/atom/ns#' term='essay'/><title type='text'>Research Needs for Water Resource Applications of GIS</title><content type='html'>Water resources are challenging to model in a geographic information system because these features are often so temporally variable.  John P. Wilson, et al. discuss in the article, “Water Resource Applications of Geographic Information Systems” many methods of water resource management and assessment.  Often, these topics reiterate the relation of data sharing with the increasing level of technology.  These advancements allow a greater number of less professionally trained individuals to contribute what can possibly be high quality data with a &lt;a href="http://justinberke.blogspot.com/2010/01/essay-on-uncertainty-in-spatial-data.html"&gt;varying degree of uncertainty&lt;/a&gt;.  For this reason, future technology will need to incorporate these individuals’ level of training and geographic and scientific understanding into the framework of tool building.  Thus interfaces for using such tools must be created to suit a wide audience efficiently.  Otherwise, difficulty in using technology directly translates to uncertainty.  &lt;a href="http://justinberke.blogspot.com/2010/01/essay-on-scale.html"&gt;Scale&lt;/a&gt; is addressed often as well when reviewing other issues ranging from the integration of spatial data acquisition technology to data sharing practices.&lt;br /&gt;Primarily, it is stressed that raster grid resolution selection should attempt to match the size of the smallest features that are being modeled.&amp;nbsp; Accuracy of these resources is quickly degraded due to excess aggregation of topographic features.&amp;nbsp; Generalization in this regard minimizes the number possibilities of variation for a given area where a smaller stream feature, for instance, could exist in reality.&amp;nbsp; Using a raster resolution of 30 meters rather than the 2-10 meter resolutions suggested by several studies mentioned easily smoothes over smaller changes in topography.&amp;nbsp; Further, a 30 meter cell size yields only 21% - 30% of correct slope gradients.&amp;nbsp; However, if only larger (major) features are required to be analyzed or communicated, 30 meter resolution can sometimes be quite sufficient.&lt;br /&gt;&lt;br /&gt;Many water resource applications are GIS-based.&amp;nbsp; The National Hydrography Dataset is a prime example of how to digitally store and communicate a hydrologic network by logically displaying geographic information with its organizational and descriptive parameters embedded within in a GIS environment.&amp;nbsp; An example of temporal water quality monitoring is the Florida DEP's &lt;a href="http://www.dep.state.fl.us/Water/monitoring/index.htm"&gt;Watershed Monitoring program&lt;/a&gt; and EPA &amp;amp; &lt;a href="http://www.dep.state.fl.us/WATER/STORET/INDEX.HTM"&gt;FDEP’s STORET&lt;/a&gt; (“STOrage and RETrieval” database) program, where water quality data from across the state of Florida is collected, managed in databases, and can be served internally or publicly via &lt;a href="http://ca.dep.state.fl.us/imf?focus=waterdatacentral"&gt;internet mapping service&lt;/a&gt;, while being provided to in-house personnel for GIS analysis via ArcSDE &amp;amp; ArcGIS Server. Advancements in technology such as these increase the dissemination of information to a growing number of skilled as well as improperly trained stewards and contributors of information.&amp;nbsp; Increased availability must be mirrored by an increased accounting of data collection information in the form of metadata to ensure reliability.&amp;nbsp; A method of controlling uncertainty for every step of data collection is currently available by reporting appropriate &lt;a href="http://www.fgdc.gov/metadata/"&gt;metadata&lt;/a&gt; parameters prior to distribution of any data.&amp;nbsp; Although this information is mainly included on official final-drafts of published datasets, more can be done deeper within an organization to include metadata to aide in the quality assurance of final versions of disseminated data.&lt;br /&gt;&lt;br /&gt;Overall, it will be important to develop efficient models of water resources that can be used by an audience with contrasting degrees of familiarity with geographic information.&amp;nbsp; By conducting further research on the most effective way to properly incorporate data with varying degrees of uncertainty, as well as investigating the most efficient scales at which modeling hydrologic networks should take place, the GIS community can continue to accurately model water resources in the future.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4228793464107368822-7404401387528971020?l=justinberke.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://justinberke.blogspot.com/feeds/7404401387528971020/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4228793464107368822&amp;postID=7404401387528971020' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/7404401387528971020'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/7404401387528971020'/><link rel='alternate' type='text/html' href='http://justinberke.blogspot.com/2010/01/research-needs-for-water-resource.html' title='Research Needs for Water Resource Applications of GIS'/><author><name>Justin</name><uri>http://www.blogger.com/profile/13405139779467188945</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VJ2U8mMqPfU/SoSptGXK8iI/AAAAAAAABOQ/qRpz6nqiK7k/S220/pic.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4228793464107368822.post-673799565176082400</id><published>2010-01-25T01:01:00.001-05:00</published><updated>2010-01-25T01:02:53.539-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GIS'/><category scheme='http://www.blogger.com/atom/ns#' term='research'/><category scheme='http://www.blogger.com/atom/ns#' term='geography'/><category scheme='http://www.blogger.com/atom/ns#' term='essay'/><title type='text'>Challenges in using GIS for Emergency Preparedness &amp; Response</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_VJ2U8mMqPfU/S1ksMFUK1AI/AAAAAAAABf8/KbcwdphsUyA/s1600-h/essay_EmergencyPrep01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_VJ2U8mMqPfU/S1ksMFUK1AI/AAAAAAAABf8/KbcwdphsUyA/s320/essay_EmergencyPrep01.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt; My sister and myself after hurricane Andrew in 1992, &lt;a href="http://maps.google.com/?ie=UTF8&amp;amp;hq=&amp;amp;hnear=Tallahassee,+Leon,+Florida&amp;amp;ll=25.619513,-80.356887&amp;amp;spn=0,359.997589&amp;amp;t=h&amp;amp;z=19&amp;amp;layer=c&amp;amp;cbll=25.619505,-80.356783&amp;amp;panoid=1kqhKcRuVUPV7ejDwGDWpA&amp;amp;cbp=12,279.86,,0,11.21"&gt;south Miami&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Hazards are common to every location on Earth and often shape the characteristics that define a given landscape.  In the US, California is well known for earthquakes and wildfires, Florida is known for hurricanes, and the Midwest is specifically referred to as “tornado alley.”  Of course these occurrences are by no means limited to these locations, and these locations are not limited to these natural hazards.  Hazards include any natural event (meteorological, geological, hydrological, biological, etc.) or human-induced process or phenomenon (war, industrial accidents, etc.) that may potentially impact, endanger, or threaten lives, resources, and the environment.  Having a sound understanding of how such events impact and shape the geography of a region is essential for efficient planning and mitigation of the affects of damage and loss of life when these events arise in the future.  Using GIS as a tool to analyze the factors associated with a specific hazard allows for the rapid assessment and response to costly situations.  Although GIS can be used as a powerful tool to analyze information in attempts to reduce risk, damage, loss, and recovery time resulting from any hazard or combination of hazards, the limitations of time and resources frequently characterize the overall usefulness of GIS in three general stages.  The May 2000 ESRI white paper, “&lt;a href="http://www.esri.com/library/whitepapers/pdfs/challenges.pdf"&gt;Challenges for GIS in Emergency Preparedness and Response&lt;/a&gt;,” explains the stages of a hazard event and continues to discuss challenges for GIS in management and analysis of information during these periods.&lt;br /&gt;&lt;br /&gt;Prior to an event, proactive planning assesses potential risk, and whenever possible evacuation procedures are imposed to limit the affects of the hazard.  During this stage, time is limited as the hazard becomes imminent, and valid information is necessary to be produced hastily.  The urgency and importance of such information can be exemplified in a situation where rising flood threaten a populated location.  In this circumstance, it is imperative to provide planning and rescue efforts a list of affected roadway names.  To produce accurate information, a project must begin with accurate and up-to-date information.  If changes in a city’s roadway network have been added or altered without being reflected in a GIS coverage, it could be possible to send responding emergency vehicles into flooded areas.  Risk mapping and emergency simulation require the most current information.  Reactive response begins when the event begins.  After the event has ended, another reactive response situation begins to unfold.  During this subsequent stage appropriate resource management and planning must occur to efficiently being the path to rebuilding and recovery.  Overall, there is a need to move from reactive response to prevention and planning to me most efficient in minimizing loss.  Adhering to a proactive planning method will reduce the general cost of evacuation when that time presents itself in the future.&lt;br /&gt;&lt;br /&gt;The white paper discusses a number of important factors concerned with the acquisition and integration of spatial data in an emergency planning environment.  It is necessary to identify what sources of data are available, what kinds of data needs to be obtained, who needs access to which types of data, what problems to expect when integrating sources of spatial information, and what amount of uncertainty comes with a dataset, and to what extent is the uncertainty acceptable.  When working with several agencies in an emergency, it is important to have strategies in place to avoid the loss of efficiency due to poor or difficult methods of integration.  One solution to this comes from the advancement of distributed computing systems.  Highly efficient, temporally narrow analysis can be conducted on interactive geographic information systems via a link to immediately updated remotely sensed information in the field, however if several organizations are unaware of how to share this information, efficiency of planning and response can be significantly hindered.&lt;br /&gt;&lt;br /&gt;The article mentions that dynamic representation, or temporal visualization, is an area that needs to be researched further, and that GIS is not the best method for representing temporal data.  This was written in 2000, however, and there have since been a number of powerful options which allow for the integration of GIS information with other software packages to create dynamic maps to render time-lapsed data, etc. quite effectively.  Such tools have been built directly into ArcGIS for the past few versions that create powerful digital video with ease from even the most simplistic of datasets. &lt;br /&gt;&lt;br /&gt;Finally, &lt;a href="http://justinberke.blogspot.com/2010/01/essay-on-scale.html"&gt;scale&lt;/a&gt; is an issue that must be addressed in emergency management in GIS. One main problem is that DEM datasets can be inadequate for analysis in (certain) cases – especially when modeling hydrologic events. &lt;a href="http://www2.jpl.nasa.gov/srtm/"&gt;Shuttle Radar Topography Mission&lt;/a&gt; (SRTM) data comes in 30 meter and 90 meter resolutions. Emergency management often deals with larger scales than this would prove useful for more than very basic analysis. Higher resolution Lidar would be a more appropriate choice to acquire in order to perform surface analysis to model emergency situations involving flooding, etc.&lt;br /&gt;&lt;br /&gt;GIS attempts to reduce the amount of risk, damage, loss, and recovery time resulting from many different hazards in the field of emergency management. There are many ways to plan proactively to contribute to a safe and efficient means of protecting society. Keeping up-to-date records and communicating with other agencies are some of the most important issues to consider to provide a well prepared emergency response strategy that will minimize loss for many affected parties.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4228793464107368822-673799565176082400?l=justinberke.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://justinberke.blogspot.com/feeds/673799565176082400/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4228793464107368822&amp;postID=673799565176082400' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/673799565176082400'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/673799565176082400'/><link rel='alternate' type='text/html' href='http://justinberke.blogspot.com/2010/01/challenges-in-using-gis-for-emergency.html' title='Challenges in using GIS for Emergency Preparedness &amp; Response'/><author><name>Justin</name><uri>http://www.blogger.com/profile/13405139779467188945</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VJ2U8mMqPfU/SoSptGXK8iI/AAAAAAAABOQ/qRpz6nqiK7k/S220/pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_VJ2U8mMqPfU/S1ksMFUK1AI/AAAAAAAABf8/KbcwdphsUyA/s72-c/essay_EmergencyPrep01.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4228793464107368822.post-833634963644792887</id><published>2010-01-24T17:02:00.000-05:00</published><updated>2010-01-24T17:02:50.944-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hydrography/hydrology'/><category scheme='http://www.blogger.com/atom/ns#' term='geography'/><title type='text'>Hydrograpic Vocab: Streams</title><content type='html'>&lt;b&gt;&lt;span style="font-size: large;"&gt;&lt;i&gt;Parts of a stream:&lt;/i&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Some of these were obtained, or altered from the &lt;a href="http://en.wikipedia.org/wiki/Stream"&gt;(Wikipedia entry on Streams&lt;/a&gt;)&lt;/span&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://maps.google.com/?ie=UTF8&amp;amp;hq=&amp;amp;hnear=Tallahassee,+Leon,+Florida&amp;amp;ll=30.23382,-84.293675&amp;amp;spn=0.017167,0.038581&amp;amp;t=h&amp;amp;z=15"&gt;Spring&lt;/a&gt; &lt;/b&gt;- The point at which a stream emerges from an underground course through unconsolidated sediments or through caves. A stream can, especially with caves, flow aboveground for part of its course, and underground for part of its course.&lt;br /&gt;&lt;b&gt;Swalette&lt;/b&gt; -&amp;nbsp; The portion of a disappearing stream where the water drains into a sinkhole into an aquifer or subterranean cave or culvert; characteristic of Karst hydrology and topography.&amp;nbsp; This system may return to the surface at a spring.&lt;br /&gt;&lt;b&gt;Source &lt;/b&gt;- The spring from which the stream originates, or other point of origin of a stream.&lt;br /&gt;&lt;b&gt;Headwaters&lt;/b&gt; - The part of a stream or river proximate to its source. The word is most commonly used in the plural where there is no single point source.&lt;br /&gt;&lt;b&gt;&lt;a href="http://maps.google.com/?ie=UTF8&amp;amp;hq=&amp;amp;hnear=Tallahassee,+Leon,+Florida&amp;amp;ll=30.398493,-81.649189&amp;amp;spn=0.068553,0.154324&amp;amp;t=k&amp;amp;z=13"&gt;Confluence&lt;/a&gt; &lt;/b&gt;- The point at which the two streams merge. If the two tributaries are of approximately equal size, the confluence may be called a fork.&lt;br /&gt;&lt;b&gt;Run &lt;/b&gt;- A somewhat smoothly flowing segment of the stream.&lt;br /&gt;&lt;b&gt;Pool &lt;/b&gt;- A segment where the water is deeper and slower moving.&lt;br /&gt;&lt;b&gt;Riffle &lt;/b&gt;- A segment where the flow is shallower and more turbulent.&lt;br /&gt;&lt;b&gt;Channel &lt;/b&gt;- A depression created by constant erosion that carries the stream's flow.&lt;br /&gt;&lt;b&gt;Floodplain &lt;/b&gt;- Lands adjacent to the stream that are subject to flooding when a stream overflows its banks.&lt;br /&gt;&lt;b&gt;Stream bed &lt;/b&gt;- The bottom of a stream.&lt;br /&gt;&lt;b&gt;Gauging station &lt;/b&gt;- A point of demarkation along the route of a stream or river, used for reference marking or water monitoring.&lt;br /&gt;&lt;b&gt;Thalweg &lt;/b&gt;- The river's longitudinal section, or the line joining the deepest point in the channel at each stage from source to mouth.&lt;br /&gt;&lt;b&gt;Wetted perimeter &lt;/b&gt;- The line on which the stream's surface meets the channel walls.&lt;br /&gt;&lt;b&gt;Nickpoint &lt;/b&gt;- The point on a stream's profile where a sudden change in stream gradient occurs.&lt;br /&gt;&lt;b&gt;Waterfall or cascade &lt;/b&gt;- The fall of water where the stream goes over a sudden drop called a nickpoint; some nickpoints are formed by erosion when water flows over an especially resistant stratum, followed by one less so. The stream expends kinetic energy in "trying" to eliminate the nickpoint.&lt;br /&gt;&lt;b&gt;&lt;a href="http://maps.google.com/?ie=UTF8&amp;amp;hq=&amp;amp;hnear=Tallahassee,+Leon,+Florida&amp;amp;ll=30.836215,31.415405&amp;amp;spn=2.18366,4.938354&amp;amp;t=k&amp;amp;z=8"&gt;Mouth&lt;/a&gt; &lt;/b&gt;- The point at which the stream discharges, possibly via an estuary or delta, into a static body of water such as a lake or ocean&lt;br /&gt;&lt;a href="http://maps.google.com/?ie=UTF8&amp;amp;hq=&amp;amp;hnear=Tallahassee,+Leon,+Florida&amp;amp;ll=30.246167,-85.071945&amp;amp;spn=0.137319,0.308647&amp;amp;t=h&amp;amp;z=12"&gt;&lt;b&gt;Meander&lt;/b&gt;&lt;/a&gt; - The natural bending and winding of a section of river; usually indicative of a mature or old, established&amp;nbsp; feature.&amp;nbsp; Meandering is the result of water's mechanics of erosion, sediment transportation.&amp;nbsp; Faster, turbid water has a higher capacity to carry load, whereas the same water column will drop its load when it slows.&amp;nbsp; As a stream approaches a turn in a watercourse, water will flow more slowly along the inside shoreline where sediment load is dropped and deposition occurs.&amp;nbsp; Conversely, water moves faster along the outer edge, where undercutting and erosion of the shoreline occur, which can be deposited downstream.&amp;nbsp; Over time, this process deviates the section of river laterally (from the stream run), creating a turn which can occur in succession along a watercourse.&lt;br /&gt;&lt;a href="http://maps.google.com/?ie=UTF8&amp;amp;hq=&amp;amp;hnear=Tallahassee,+Leon,+Florida&amp;amp;ll=30.369691,-85.020275&amp;amp;spn=0.034287,0.077162&amp;amp;t=h&amp;amp;z=14"&gt;&lt;b&gt;Oxbow Lake&lt;/b&gt;&lt;/a&gt; - A relic of a stream meander which has exceeded its maximum potential to change course.&amp;nbsp; A meander eventually erodes through neighboring shorelines to connect again as a straight, shorter stream run.&amp;nbsp; This process leaves a closed segment of the meander's previous course as a non-flowing U-shaped lake to the side of the current stream.&amp;nbsp; Over a long period of geologic time, a floodplain may exhibit signs of &lt;a href="http://maps.google.com/?ie=UTF8&amp;amp;hq=&amp;amp;hnear=Tallahassee,+Leon,+Florida&amp;amp;ll=34.669359,-92.148514&amp;amp;spn=0.130735,0.439453&amp;amp;t=h&amp;amp;z=12"&gt;meander scarring&lt;/a&gt;, where many iterations of sinuous variation have occured.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;i&gt;&lt;b&gt;Temporal Establishment:&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;b&gt;Perennial&lt;/b&gt; - Established waterbodies, present throughout a year under a normal hydroperiod&lt;br /&gt;&lt;b&gt;Intermittent&lt;/b&gt; - A stream that is present for most of the year, which stops flowing for weeks or months at a time&lt;br /&gt;&lt;b&gt;Ephemeral&lt;/b&gt; - Short lived features, usually flowing after significant precipitation events&lt;br /&gt;&lt;b&gt;Winterbourne&lt;/b&gt; - A stream which flows only during winter months and is dry during the summer (dry season)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;i&gt;&lt;b&gt;Drainage Patterns:&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;Images courtesy Michael E. Ritter. Read more about these drainage patterns in his free e-book:&lt;a href="http://www.uwsp.edu/geo/faculty/ritter/geog101/textbook/fluvial_systems/drainage_patterns.html"&gt; The Physical Environment: an Introduction to Physical Geography&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;span style="font-size: large;"&gt;&lt;i&gt;&lt;b&gt; &lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;b&gt;Dendritic&lt;/b&gt; - A very common branching fractal pattern found nature that can also be found in leaves, branches, tree roots, and veins to name a few.&lt;br /&gt;&lt;a href="http://maps.google.com/?ie=UTF8&amp;amp;hq=&amp;amp;hnear=Tallahassee,+Leon,+Florida&amp;amp;ll=30.125679,-84.209175&amp;amp;spn=0.017186,0.054932&amp;amp;t=h&amp;amp;z=15"&gt;Large scale example&lt;/a&gt; in Apalachee Bay south of St. Marks, Florida (be sure to zoom in and out, and pan to the east for a few miles to observe the varying scales in which these patterns exist in nature)&lt;br /&gt;&lt;a href="http://maps.google.com/?ie=UTF8&amp;amp;hq=&amp;amp;hnear=Tallahassee,+Leon,+Florida&amp;amp;t=k&amp;amp;ll=30.595957,-86.980133&amp;amp;spn=1.035516,3.515625&amp;amp;z=9"&gt;Smaller scale example&lt;/a&gt; showing the confluence in Pensacola Bay in western Florida&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.uwsp.edu/geo/faculty/ritter/images/lithosphere/fluvial/dendritic.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://www.uwsp.edu/geo/faculty/ritter/images/lithosphere/fluvial/dendritic.gif" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;Dendritic drainage pattern&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;Read more about these additional types of drainage in the free e-book, &lt;a href="http://www.uwsp.edu/geo/faculty/ritter/geog101/textbook/fluvial_systems/drainage_patterns.html"&gt;The Physical Environment: an Introduction to Physical Geography&lt;/a&gt;.&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;Parallel&lt;/b&gt; - Similar to dendritic features, but the branches are skewed to run more or less in a similar direction influenced by changes in elevation&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.uwsp.edu/geo/faculty/ritter/images/lithosphere/fluvial/parallel.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://www.uwsp.edu/geo/faculty/ritter/images/lithosphere/fluvial/parallel.gif" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;Parallel drainage pattern&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Trellis&lt;/b&gt; -Read more about this pattern &lt;a href="http://www.uwsp.edu/geo/faculty/ritter/geog101/textbook/fluvial_systems/drainage_patterns.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.uwsp.edu/geo/faculty/ritter/images/lithosphere/fluvial/trellis.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://www.uwsp.edu/geo/faculty/ritter/images/lithosphere/fluvial/trellis.gif" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;Trellis drainage pattern&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Rectangular&lt;/b&gt; - Read more about this pattern &lt;a href="http://www.uwsp.edu/geo/faculty/ritter/geog101/textbook/fluvial_systems/drainage_patterns.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.uwsp.edu/geo/faculty/ritter/images/lithosphere/fluvial/rectangular.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://www.uwsp.edu/geo/faculty/ritter/images/lithosphere/fluvial/rectangular.gif" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;Rectangular drainage pattern&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Radial&lt;/b&gt; - Caused by centrally located elevated land forms; from uplift, volcanoes, or other geological phenomena.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.uwsp.edu/geo/faculty/ritter/images/lithosphere/fluvial/radial.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://www.uwsp.edu/geo/faculty/ritter/images/lithosphere/fluvial/radial.gif" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;Radial drainage pattern&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Centripetal&lt;/b&gt; - Caused by centrally located depression in geography which can drain into a number of features including a depressional wetland, a swalette in a disappearing stream, an intermittent or ephemeral lake which can leave a salt flats in the dry lake bed, etc.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.uwsp.edu/geo/faculty/ritter/images/lithosphere/fluvial/centripetal.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://www.uwsp.edu/geo/faculty/ritter/images/lithosphere/fluvial/centripetal.gif" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;Centripetal drainage pattern&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Deranged&lt;/b&gt; - A sign of significant disturbance of historically established features.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.uwsp.edu/geo/faculty/ritter/images/lithosphere/fluvial/deranged.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://www.uwsp.edu/geo/faculty/ritter/images/lithosphere/fluvial/deranged.gif" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;Deranged drainage pattern&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4228793464107368822-833634963644792887?l=justinberke.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://justinberke.blogspot.com/feeds/833634963644792887/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4228793464107368822&amp;postID=833634963644792887' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/833634963644792887'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/833634963644792887'/><link rel='alternate' type='text/html' href='http://justinberke.blogspot.com/2010/01/hydrograpic-vocab-streams.html' title='Hydrograpic Vocab: Streams'/><author><name>Justin</name><uri>http://www.blogger.com/profile/13405139779467188945</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VJ2U8mMqPfU/SoSptGXK8iI/AAAAAAAABOQ/qRpz6nqiK7k/S220/pic.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4228793464107368822.post-2098226565427526071</id><published>2010-01-23T23:13:00.001-05:00</published><updated>2010-01-23T23:14:00.370-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GIS'/><category scheme='http://www.blogger.com/atom/ns#' term='research'/><category scheme='http://www.blogger.com/atom/ns#' term='Remote Sensing'/><category scheme='http://www.blogger.com/atom/ns#' term='imagery'/><category scheme='http://www.blogger.com/atom/ns#' term='geography'/><category scheme='http://www.blogger.com/atom/ns#' term='essay'/><title type='text'>Multispectral &amp; Hyperspectral Remote Sensing Image Extraction</title><content type='html'>Multispectral sensors such as the &lt;a href="http://landsat.gsfc.nasa.gov/"&gt;Landsat series&lt;/a&gt;, &lt;a href="http://www.spot.com/"&gt;SPOT&lt;/a&gt;, &lt;a href="http://geoeye.com/CorpSite/products/imagery-sources/Default.aspx#ikonos"&gt;IKONOS&lt;/a&gt;, and &lt;a href="http://www.digitalglobe.com/"&gt;QuickBird&lt;/a&gt; acquire anywhere from three to ten simultaneous bands of information across a scene.&amp;nbsp; Each of these bands cover a relatively broad spectral range of electromagnetic radiation observation.&amp;nbsp; Hyperspectral remote sensing, as its name implies, is generally composed of a greater number of spectral bands which observe a more precise (narrow) spectral threshold.&amp;nbsp; The &lt;a href="http://modis.gsfc.nasa.gov/"&gt;MODIS&lt;/a&gt; sensor uses 36 bands, while NASA's &lt;a href="http://aviris.jpl.nasa.gov/"&gt;AVIRIS&lt;/a&gt; sensor captures as many as 224 bands.&lt;br /&gt;&lt;br /&gt;John R. Jensen continues to describe in his book, &lt;u&gt;Introductory Digital Image processing: A Remote Sensing Perspective&lt;/u&gt;, two methods of multi- and hyperspectral image acquisition methods: the whiskbroom system, and the linear and area array technique.&amp;nbsp; In both methods, instantaneous field-of-view (IFOV) radiant flux – observed reflectance from the Earth's surface – is passed through a spectrometer in order to disperse, or separate the light into separate bands; ranging from blue to near infrared (NIR) and IR wavelengths, which are passed onto a spectrometer where it is dispersed and focused onto a array of detectors which digitally record the field of view.&amp;nbsp; The whiskbroom method uses a rotating mirror to reflect and direct radiant flux through the spectrometer to a linear array detector which individually measures the value of radiation of each band that has been separated.&amp;nbsp; This technique is best suited for capturing broad spectral ranges and is utilized by multispectral sensors such as Landsat MMS and SPOT, etc.&amp;nbsp; These sensors undersample the observed radiant flux by making only a few measurements from wide spectral bands; as wide as several hundred nanometers which may cover more than one color of the spectrum simultaneously.&amp;nbsp; Although the use of a dispersing element is similarly used in each method to separate incoming light into individual bands, the alternative method of does not use a scanning mirror; thus allowing a longer amount of time for a detector to record the incoming radiant flux of a given area.&amp;nbsp; This extra duration of detection yields improved geometric and radiometric accuracy.&lt;br /&gt;&lt;br /&gt;These methods have dramatic implications on the type of information that is produced.&amp;nbsp; The varying techniques influence spectral, temporal, radiometric, and even spatial resolution of a produced image.&amp;nbsp; Various types of investigation require unique parameters in the type of data that will be used in analysis.&amp;nbsp; Having an understanding of the different types of information that are produced by multi- and hyperspectral imagery with a respect to ground conditions that are being observed will ensure the most accurate results are obtained during image analysis and exploration.&lt;br /&gt;&lt;br /&gt;The process of extracting information from multispectral and hyperspectral imagery are largely similar, however there are a few preliminary steps one must complete before analyzing hyperspectral datasets.&amp;nbsp; Various forms of calibration – radiometric, geometric, etc. – are common between these two types of imagery, however the larger volume of highly specific spectral bands associated with hyperspectral imagery permit the construction of "spectra" that closely resemble the quality of spectral signatures captured by spectroradiometers in laboratories.&amp;nbsp; Further, initial image quality assessment of hyperspectral can be a much more tedious undertaking, although it is occasionally possible to use hyperspectral images with poor quality for atmospheric correction.&amp;nbsp; Due to this more time consuming and redundant task of visual examination, many image processing packages have animation functions that provide a more efficient means of inspecting up to hundreds of images in a single session.&lt;br /&gt;&lt;br /&gt;Overall, the dimensionality is the most distinguishing characteristic between these two types of remote sensing techniques.&amp;nbsp; The low data dimensionality of multispectral imagery is significantly more accessible and less difficult to work with in basic research due to the low number of spectral bands that make up an image.&amp;nbsp; The higher number of bands/images involved with hyper- and ultraspectral imagery generate numerous obstacles, ranging from data storage to processing abilities.&amp;nbsp; Numerous images of highly specific spectral bands – often representing bandwidths of just 10 nm each – produce certain amounts redundant information.&amp;nbsp; Statistical analysis aids in identifying, and removing or transforming data in order to reduce the dimensionality of the overall hyperspectral dataset, improving the efficiency of exploration and analysis.&amp;nbsp; Although there are indeed variations that exist with regard to image processing techniques between these two types of remote sensing data, the causes again are largely due to dimensionality.&amp;nbsp; An analyst must decide whether few, spectrally broad images or numerous and specific images will best suit his or her analysis.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4228793464107368822-2098226565427526071?l=justinberke.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://justinberke.blogspot.com/feeds/2098226565427526071/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4228793464107368822&amp;postID=2098226565427526071' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/2098226565427526071'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/2098226565427526071'/><link rel='alternate' type='text/html' href='http://justinberke.blogspot.com/2010/01/multispectral-hyperspectral-remote.html' title='Multispectral &amp; Hyperspectral Remote Sensing Image Extraction'/><author><name>Justin</name><uri>http://www.blogger.com/profile/13405139779467188945</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VJ2U8mMqPfU/SoSptGXK8iI/AAAAAAAABOQ/qRpz6nqiK7k/S220/pic.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4228793464107368822.post-3991420257656898865</id><published>2010-01-18T02:23:00.000-05:00</published><updated>2010-01-18T02:23:50.391-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tool'/><category scheme='http://www.blogger.com/atom/ns#' term='DIY'/><category scheme='http://www.blogger.com/atom/ns#' term='virus/malware'/><title type='text'>Google Installer Virus / House Full of Virii</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://thesegoto11.files.wordpress.com/2008/11/aids_virus_dh_561db385.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="307" src="http://thesegoto11.files.wordpress.com/2008/11/aids_virus_dh_561db385.jpg" width="320" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: x-small;"&gt;A fractal model of malware code found on my computer*&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Not sure where it came from, but I recently had a small battle with some sort of virus that presented itself as a Google installation.&amp;nbsp; I never would have noticed (I'm getting used to Lappy Tappy running slowly), but every five minutes or so I would get an "End Program" error about a Google Installer program failing.&lt;br /&gt;&lt;br /&gt;Then one day every web site I went to redirected me to comcast&lt;i&gt;something&lt;/i&gt;.net&amp;nbsp; I forgot the actual URL, but it looked quite legit.&amp;nbsp; The web site claimed to be Comcast asking for user info - which screamed 1997 AOL scam.&amp;nbsp; Running &lt;a href="http://justinberke.blogspot.com/2008/12/spyware-guard-2008-you-just-blew-my.html"&gt;my previous methods using Malwarebytes&lt;/a&gt; cured the browser redirection, but I still had a problem with the Google installer, and there were a few infections showing up in my virus/malware scanners.&lt;br /&gt;&lt;br /&gt;Enter &lt;a href="http://www.bleepingcomputer.com/combofix/how-to-use-combofix"&gt;ComboFix from Bleepingcomputer&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;This is great.&amp;nbsp; Very light.&amp;nbsp; Very effective.&amp;nbsp; As a side note, my roommate had a virus of his own that prohibited him from using Windows in anything but Safe Mode for more than five minutes.&amp;nbsp; He was ready to drop over a hundred bucks at a local computer tech shop, but ComboFix kicked that trouble to the curb**!&lt;br /&gt;&lt;br /&gt;** ComboFix allowed my roommate and myself to get around the virus/malware to scan, clean, and continue protecting our computers again.&amp;nbsp; Here's a list of my recommended scanners and utilities:&lt;span style="background-color: yellow;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;Recommended Scanners:&lt;/b&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;All of my recommendations are freeware.&amp;nbsp; If you have the means, purchase a license or contribute a few bucks, as these are great utilities and are well worth the money.&amp;nbsp; Otherwise, get ready to spend at least $100 at a tech shop or Best Buy.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://www.bleepingcomputer.com/combofix/how-to-use-combofix"&gt;ComboFix&lt;/a&gt;&lt;/b&gt;&amp;nbsp; - (download from bleepingcomputer.com &lt;b&gt;only&lt;/b&gt;) This is a very light (3.64 MB) standalone/no install program that searches deep within the boot sector of your hard drive for malware which may be prohibiting other utilities to run.&amp;nbsp; Often, malicious software prohibits this, and many other scanners from running, so it may be necessary (just go ahead and do this) to rename the executable file from ComboFix.exe to anything else that is not ComboFix.exe.&amp;nbsp; I used the suggested Ieexplore.exe and it worked swimmingly.&lt;br /&gt;&lt;br /&gt;I saved this to C:\Program Files\ComboFix Anti-Malware\ and copied the shortcut (with the modified name) into my Start\Programs\Utilities menu for easy future access (ala forbid).&amp;nbsp; If you use this, follow the directions listed on the bleepingcomputer website verbatim.&amp;nbsp; This was not difficult to run, but there seem to be more warnings than are usually provided with such software, so be careful.&amp;nbsp; Overall, there aren't really any decisions.&amp;nbsp; Just follow it's directions and choose Yes to install the Windows Recovery Console thing and you'll be good to go.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://free.avg.com/us-en/homepage"&gt;&lt;b&gt;AVG Anti-Virus&lt;/b&gt;&lt;/a&gt; - This is great anti-virus software.&amp;nbsp; It's also FREE and seems lighter and faster than other software packages I've used in the past.&amp;nbsp; McAfee was great but it sometimes gets clunky.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.malwarebytes.org/"&gt;&lt;b&gt;Malwarebytes' Anti-Malware&lt;/b&gt;&lt;/a&gt; - This saved me from the dreaded &lt;a href="http://justinberke.blogspot.com/search/label/virus%2Fmalware"&gt;Spyware Guard 2008&lt;/a&gt; pain in the ass extortionware fiasco.&amp;nbsp; I don't think the software is completely free, but I used the free portion to disable malware that was blocking other free scanners.&amp;nbsp; Life saver.&amp;nbsp; Good scanner to have in this case.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.lavasoft.com/"&gt;&lt;b&gt;Lavasoft Ad-Aware&lt;/b&gt;&lt;/a&gt; - A standard in adware detection and removal software.&amp;nbsp; I rarely run or scan, but it's a good tool to have in the arsenal. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://download.cnet.com/Spybot-Search-amp-Destroy/3000-8022_4-10122137.html"&gt;&lt;b&gt;Spybot Search and Destroy&lt;/b&gt;&lt;/a&gt; - Another free package.&amp;nbsp; Many ups provided by users.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;Tips to Consider:&lt;/b&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;If a software package does not seem to run, or you cannot install on an infected machine, rename the file you're trying to run.&amp;nbsp; I had to burn Malwarebytes to a CD from another computer under a fake install name to disable to malware that was prohibiting me from scanning.&amp;nbsp; Same thing with ComboFix; where I had to rename ComboFix.exe to Ieexplore.exe, and had no subsequent trouble.&lt;/li&gt;&lt;li&gt;If you're lazy like me and HATE scanning your computer on a regular basis, at least update your scanners every once in a while.&amp;nbsp; It takes ten minutes tops and can really save your butt - just in case.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;If you find an infection, stop using your computer and scan the shit out of it.&amp;nbsp; It may take a few days of scanning overnight, wake up, run another scan, go to work, come home and follow up with another damn scan.&amp;nbsp; I recommend several software packages because A) they're free, 2) they're quite powerful and comprehensive, and D) they're free.&amp;nbsp; Take the time to fix your computer on your own.&amp;nbsp; Otherwise have fun shelling out a wad of cash to loose your computer for a week or more.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Upgrading to the full version of these programs seems to provide "live scans" and more control over scheduled scans.&amp;nbsp; No thanks.&amp;nbsp; The free versions of these software are wonderful.&amp;nbsp; Again, purchase or support whenever possible.&amp;nbsp; These rock.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;* This is actually the AIDS virus - not code, nor a &lt;a href="http://en.wikipedia.org/wiki/Fractal"&gt;fractal&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4228793464107368822-3991420257656898865?l=justinberke.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://justinberke.blogspot.com/feeds/3991420257656898865/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4228793464107368822&amp;postID=3991420257656898865' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/3991420257656898865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/3991420257656898865'/><link rel='alternate' type='text/html' href='http://justinberke.blogspot.com/2010/01/google-installer-virus-house-full-of.html' title='Google Installer Virus / House Full of Virii'/><author><name>Justin</name><uri>http://www.blogger.com/profile/13405139779467188945</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VJ2U8mMqPfU/SoSptGXK8iI/AAAAAAAABOQ/qRpz6nqiK7k/S220/pic.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4228793464107368822.post-3180248931549752772</id><published>2010-01-16T13:04:00.000-05:00</published><updated>2010-01-17T01:07:09.924-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GIS'/><category scheme='http://www.blogger.com/atom/ns#' term='visualization'/><category scheme='http://www.blogger.com/atom/ns#' term='research'/><category scheme='http://www.blogger.com/atom/ns#' term='cartography'/><category scheme='http://www.blogger.com/atom/ns#' term='geography'/><category scheme='http://www.blogger.com/atom/ns#' term='essay'/><title type='text'>An Essay on Scale</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_VJ2U8mMqPfU/S088jedq4tI/AAAAAAAABfc/Oo3-mZKw-K0/s1600-h/scale01.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_VJ2U8mMqPfU/S088jedq4tI/AAAAAAAABfc/Oo3-mZKw-K0/s640/scale01.gif" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Scale can be described as the level or extent at which observations or phenomena are represented geographically or temporally.&amp;nbsp; Scale can be described in aggregate or specific terms.&amp;nbsp; Generally, one can describe varying levels using such terms as “individual, household, neighborhood, city-wide, nation-wide, daily, annually” etc., or conversely by using more discrete definitions to quantify the physical dimensions or duration of represented events.&amp;nbsp; In regards to cartography, scale refers more specifically to the former; or the ratio and relationship between corresponding elements in reality to those represented on a map.&amp;nbsp; This ratio can often be expressed as a fraction – for instance 1/100,000 or 1:100,000, where one unit of measure on a map is equal to 100,000 of the same units in reality.&lt;br /&gt;&lt;br /&gt;When obtaining data, it is important to consider scale to determine the appropriateness of a GIS coverage for a given project.&amp;nbsp; For example, analysis conducted on a large scale – such as a parcel of forest land – requires data obtained at a high resolution.&amp;nbsp; Whether these data are vector rivers or roadways, digitized at a high resolution or captured using many GPS observations, or the data have been obtained by using high resolution raster imagery or interpolated surfaces, it is important for the data to provide enough information about a geographic extent to give a suitable representation of reality for a desired level of study.&amp;nbsp; Conversely, the same high resolution data may not be necessary for analysis of an area at a smaller scale – such as a state-wide or regional analysis of forested lands.&amp;nbsp; In this smaller-scale example, data obtained at a scale of 1:100,000 would be more practical to obtain and utilize for analysis, whereas data for parcel-level analysis may need to be obtained at a scale greater than 1:10,000.&lt;br /&gt;&lt;br /&gt;These examples briefly illustrate how the accuracy of data is defined by scale.&amp;nbsp; If features are digitized at a scale greater than 1:10,000, the layer becomes a more accurate depiction of ground conditions as the project’s scale decreases – the 1:10,000-scale stream features are much more accurate at 1:100,000-scale.&amp;nbsp; In contrast, features digitized at 1:100,000 quickly loose accuracy as the project’s scale increases to parcel-level.&amp;nbsp; Further, a high resolution raster dataset may affect the efficiency of running analysis over a wide extent, while a low resolution surface may not appropriately represent the events occurring across a given area.&amp;nbsp; For these reasons, it is apparent that scale characterizes the degrees of suitability for which data is valid and useful.&lt;br /&gt;&lt;br /&gt;Scale is an important issue to consider in the world of environmental and ecological studies.&amp;nbsp; One frequently occurring matter is a mismatch between the scale at which ecological processes occur and the scale at which decisions on them are made regarding these processes.&amp;nbsp; Many parameters influence the product of any project, and these parameters time and again lay at varying levels of scale.&amp;nbsp; Reading materials from class explain how focusing upon a single scale may neglect important interactions that are vital to the complex issue at hand.&amp;nbsp; Further, examination of an ecosystem may be performed at too large or too small of a scale to fully observe an occurring phenomenon.&amp;nbsp; Finally, the modifiable aerial unit problem (MAUP) is another example of scale-based error that emphasizes the previous challenge; however may be more of a matter of preference to meet a desired result.&amp;nbsp; The problem stems from the imposition of artificial aggregation of an unbounded area.&amp;nbsp; When a continuous area is artificially bounded, the results can be unavoidably skewed.&amp;nbsp; Altering scale, in this matter, allows control of the resulting spatial patterns.&amp;nbsp; Basing policy on assumptions containing overlooked conditions can easily impose unpredictable and degrading consequences on the environment and society; thus, scale is an important feature to observe and regard when examining spatial information.&lt;br /&gt;&lt;br /&gt;A few years ago I contributed to a pilot project at the Florida Department of Environmental Protection to update Florida’s version of the 1:24,000-scale National Hydrography Dataset (24k NHD).&amp;nbsp; During this project I encountered a fundamental issue previously discussed.&amp;nbsp; At what scale should features be digitized to provide a valid 1:24,000-scale coverage?&amp;nbsp; It was determined that digitizing state-wide hydrologic features be captured most efficiently and validly by digitizing at a larger scale: between 1:15,000 to 1:17,000.&amp;nbsp; By increasing the scale, a slightly more accurate depiction of ground conditions are observed and obtained for the 24k dataset, while providing enough generalization to be able to progress across vast landscapes of the state with some amount of speed.  Additionally, several issues of scale were discussed in the article, “&lt;a href="http://justinberke.blogspot.com/2010/01/remote-sensing-for-landscape-level.html"&gt;Seagrass as pasture for seacows: landscape-level dugong habitat evaluation&lt;/a&gt;.”  Raster imagery of seagrass meadows were obtained at 200 meter resolution.&amp;nbsp; At this resolution the continuous nature of seagrasses were suitably sampled, and analysis was performed appropriately.&amp;nbsp; It was not necessary to acquire imagery at a larger scale, as patches of seagrass species were easily captured at this resolution, while a larger resolution would begin to overlook patches of assorted species.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4228793464107368822-3180248931549752772?l=justinberke.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://justinberke.blogspot.com/feeds/3180248931549752772/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4228793464107368822&amp;postID=3180248931549752772' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/3180248931549752772'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/3180248931549752772'/><link rel='alternate' type='text/html' href='http://justinberke.blogspot.com/2010/01/essay-on-scale.html' title='An Essay on Scale'/><author><name>Justin</name><uri>http://www.blogger.com/profile/13405139779467188945</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VJ2U8mMqPfU/SoSptGXK8iI/AAAAAAAABOQ/qRpz6nqiK7k/S220/pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_VJ2U8mMqPfU/S088jedq4tI/AAAAAAAABfc/Oo3-mZKw-K0/s72-c/scale01.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4228793464107368822.post-4749186498788702416</id><published>2010-01-16T12:54:00.001-05:00</published><updated>2010-01-17T01:06:14.461-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='statistics'/><category scheme='http://www.blogger.com/atom/ns#' term='interpolation'/><category scheme='http://www.blogger.com/atom/ns#' term='GIS'/><category scheme='http://www.blogger.com/atom/ns#' term='research'/><category scheme='http://www.blogger.com/atom/ns#' term='Remote Sensing'/><category scheme='http://www.blogger.com/atom/ns#' term='modeling'/><title type='text'>Remote Sensing for Landscape Level Dugong Habitat Evaluation</title><content type='html'>&lt;blockquote&gt;This is a review of an article presented to Dr. Yang's GIS for Environmental Modeling class at Florida State University in the spring of 2008. &lt;br /&gt;&lt;i&gt;Sheppard, James K., Lawler, Ivan R., Marsh, Helene. (2007). Seagrass as Pasture for Seacows: Landscape-Level Dugong Habitat Evaluation&lt;span style="font-family: &amp;quot;Times New Roman&amp;quot;; font-size: 12pt;"&gt;. Estuarine Coastal &amp;amp; Shelf Science, 71(1-2):117-132.&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;iframe frameborder="0" height="342" src="http://docs.google.com/present/embed?id=dc8kqrf3_132fzqjqtfv&amp;amp;interval=60" width="410"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://docs.google.com/present/edit?id=0AWPoR3Z1imR-ZGM4a3FyZjNfMTMyZnpxanF0ZnY&amp;amp;hl=en"&gt;&lt;span style="font-size: x-small;"&gt;View Full Presentation&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;The dugong is a cousin to the West Indian manatee, which feeds on specific types of seagrasses in area around northern Australia, Indonesia, and along similar latitudes along coastal areas of the Indian Ocean.&amp;nbsp; This study uses GIS to determine which specific types of seagrasses are preferred by grazing dugongs in waters off of Queensland, Australia.&amp;nbsp; GIS is used to observe remotely sensed near infrared spectroscopy to quantify the composition and configuration of seagrass communities.&lt;br /&gt;&lt;br /&gt;Dugongs are tagged with GPS tracking devices, and their locations are tracked using the Animal Movement Analyst Extendsion in ArcView.&amp;nbsp; After three months of tracking, a study area is developed from the many line features created by the movement of the animals to estimate the extent of popular grazing locations in Hervey Bay.&amp;nbsp; Several field methods are used to capture samples of seagrasses at various locations throughout the study area – ranging from intertidal treks in shallow water to sample plant species by hand, to using submarine video equipment to analyze the plant structure from a boat.&amp;nbsp; Both methods use GPS to derive latitude and longitude data and to record other information.&amp;nbsp; Further, a steel sediment grab is used to sample benthic composition and sediment nutrients.&lt;br /&gt;&lt;br /&gt;The information is loaded into a GIS where bathymetry, seagrass cover, and nutrient profiles are created from the GIS point data that was captured.&amp;nbsp; Each of these layers are interpolated into a raster surface using the Kriging method, as it yields the most precise output for the data captured.&amp;nbsp; Nutrient analysis is conducted with Near Infrared Reflectance Spectroscopy (NRIS) due to its ability to identify the composition of organic samples very efficiently.&lt;br /&gt;&lt;br /&gt;The analysis sampled five seagrasses, ranging in levels of nitrogen, starch, and fiber.&amp;nbsp; The dugongs convert nitrogen into protein, and use starch for energy.&amp;nbsp; Fiber is a tertiary element in the seagrasses that is difficult for the dugongs to digest, therefore it is mainly avoided in large amounts.&amp;nbsp; The analysis in this study confirms these findings from past research.&lt;br /&gt;&lt;br /&gt;Remote sensing in this study is limited in evaluating biomass and species at low densities.&amp;nbsp; More valid results are easier to obtain when higher concentrations of any particular species exist over a larger area, though patches can be discovered and accounted for when sampling.&amp;nbsp; This aligns well with the general structure of seagrass meadows.&amp;nbsp; Further, remote sensing is limited to shallow water, or where seagrass stalks reach to shallow depths of water were the electromagnetic wave can penetrate and return to the capturing device.&amp;nbsp; Water quickly absorbs much of the beam emitted from sensing devices.&amp;nbsp; In addition, turbid water is another limiting factor to using remote sensing in open, flowing water.&lt;br /&gt;&lt;br /&gt;Overall, this is a very interesting article that touches on several powerful uses of GIS and remote sensing technology.&amp;nbsp; The biological analysis addressed seems to get moderately complex, however the conclusions are clearly represented and are easily interpreted in context with the spatial component of this research.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4228793464107368822-4749186498788702416?l=justinberke.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://justinberke.blogspot.com/feeds/4749186498788702416/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4228793464107368822&amp;postID=4749186498788702416' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/4749186498788702416'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/4749186498788702416'/><link rel='alternate' type='text/html' href='http://justinberke.blogspot.com/2010/01/remote-sensing-for-landscape-level.html' title='Remote Sensing for Landscape Level Dugong Habitat Evaluation'/><author><name>Justin</name><uri>http://www.blogger.com/profile/13405139779467188945</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VJ2U8mMqPfU/SoSptGXK8iI/AAAAAAAABOQ/qRpz6nqiK7k/S220/pic.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4228793464107368822.post-9170855172291939624</id><published>2010-01-14T12:56:00.001-05:00</published><updated>2010-01-14T12:57:13.351-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='interpolation'/><category scheme='http://www.blogger.com/atom/ns#' term='GIS'/><category scheme='http://www.blogger.com/atom/ns#' term='visualization'/><category scheme='http://www.blogger.com/atom/ns#' term='research'/><category scheme='http://www.blogger.com/atom/ns#' term='cartography'/><category scheme='http://www.blogger.com/atom/ns#' term='modeling'/><category scheme='http://www.blogger.com/atom/ns#' term='geography'/><category scheme='http://www.blogger.com/atom/ns#' term='essay'/><title type='text'>An Essay on Spatial Interpolation</title><content type='html'>&amp;nbsp;Spatial interpolation is the technique of estimating a complete, continuous raster surface based off of a patchwork of known point values captured across a surface in reality.&amp;nbsp; The surface that is created attempts to represent the gradation, or smooth progression between varying spatial values found in real-world observations.&amp;nbsp; Interpolation is a powerful visualization method used to make sense of point data that is otherwise very difficult to envision and interpret.&amp;nbsp; Applications of such raster surfaces include maps of population densities, precipitation levels, temperature differences, etc.&amp;nbsp; This technique has nearly limitless uses and can create a surface for any spatially-based phenomenon – one of the most notable and easily interpreted of which is an interpolation of elevation values.&amp;nbsp; It is possible to use interpolation techniques in a vector environment using a triangulated irregular network (TIN), however much of my experience has remained in the world of raster based interpolation.&lt;br /&gt;&lt;br /&gt;Spatial interpolation works by estimating values for the unknown, unsampled area between two or more known points.&amp;nbsp; A basic method of this is to derive isolines between sample points – this can even be done by hand.&amp;nbsp; I have performed a manual contour interpolation in a meteorology course in the past, where isopleths – lines of equal barometric pressure – were estimated from a map containing only weather station point data.&amp;nbsp; These lines were sketched, and another layer – frontal boundaries – could then be inferred from the location and orientation of the isolines.&amp;nbsp; Although this exercise included only a hand full of points, a surprisingly accurate map could be produced by hand, however the addition of more points can quickly force manual interpolation to become time consuming and increase chances of error.&amp;nbsp; Another method is to create a continuous surface – usually using advanced computer algorithms to automatically calculate the hundreds, if not millions or more raster cells that make up the interpolated surface.&amp;nbsp; My experience with these types of raster surfaces begin with a project conducted for the Florida State University Environmental Service Program in 2006, which used raster surfaces to model the efficiency of the University’s recycling program on campus, and to suggest new recycling bin locations.&amp;nbsp; Point locations were collected for centers of student population around campus – classroom buildings, libraries, parking lots, dorms, etc. – as well as for trash can and recycling bin locations.&amp;nbsp; Each point was assigned an appropriate weight value, and a raster surface was created for each layer.&amp;nbsp; The interpolations for each layer of centers of student population were combined using a raster calculation, and contour surfaces were created and overlaid with the raster surface of recycling bin distribution on campus.&amp;nbsp; It was then very easy to observe how the centers of high student traffic compared with the current distribution of recycling facilities on campus.&lt;br /&gt;&lt;br /&gt;One final description of spatial interpolation is enforced by Tobler’s First Law of Geography where locations close to each other have more in common than locations which are farther apart.&amp;nbsp; Spatial autocorrelation, a formulation of Tobler’s Law, continues by measuring how clustered (positive spatial autocorrelation) or dispersed (negative autocorrelation) a set of spatial features exhibit.&amp;nbsp; These ideas illustrate the significance of neighboring points (or point sets) upon one another and how neighboring points effect the resulting interpolated surface.&amp;nbsp; More advanced interpolation techniques using these concepts will be discussed.&lt;br /&gt;&lt;br /&gt;As with any area of scientific estimation and modeling, there are many issues that affect the accuracy of an interpolated raster or vector surface.&amp;nbsp; Basic affects stem from any combination of the number of points used for interpolation (the more, the better), and the distribution (positive or negative spatial autocorrelation) or distance between points (the location and proximity of neighbors significantly effect estimations between points).&amp;nbsp; More advanced effects begin with directional influence, and continue with the presence of barriers, local neighbor under- or overcorrection, and instrument error.&amp;nbsp; Finally, possibly one of the most important factors affecting the accuracy of an interpolated surface resides with choosing the most appropriate method to perform the surface interpolation. &lt;br /&gt;&lt;br /&gt;Due to this great amount of effect that the method of spatial interpolation holds upon the accuracy of the resulting surface, it is important to carefully choose a method that is most appropriate for the nature of the given data.&amp;nbsp; The class notes discuss in detail the differences between several methods.&amp;nbsp; Generally, Inverse Distance Weighted (IDW) methods limit the influence of neighbors as their distance increases (implementing Tobler’s Law).&amp;nbsp; More sample points promote a more smooth surface, however areas of littler or no data will skew the surface toward the overall mean of the dataset, creating holes: an evenly spaced distribution of input points avoids these holes. Thiessen (Voronoi, or natural neighbor) polygons often have odd-shaped boundaries to transition between polygons.&amp;nbsp; Continuous variables are not well represented.&amp;nbsp; The trend surface method uses multiple regression (predicting a dependent elevation, Z variable with independent X &amp;amp; Y, location variables) to approximate values; however this method rarely intersects the original point.&amp;nbsp; Splines are used to interpolate smooth curves, and are best for surfaces that are already smooth.&amp;nbsp; Kriging is a more in-depth, random, weighted average technique using more advanced algorithms and spatial autocorrelation, best suited when correlated distances are known or if there is directional bias in the data.&amp;nbsp; Finally, it is important to understand issues associated with exact, and approximate interpolators, as well as deterministic and geostatistical interpolators.&lt;br /&gt;&lt;br /&gt;The goal of interpolation is to minimize error.&amp;nbsp; It is the responsibility of the GIS user to understand the discussed differences between varying techniques used to interpolate surfaces.&amp;nbsp; Combining a working knowledge of the issues pertaining to spatial interpolation with the resources of the GIS reference information will assist in the creation of accurate representations.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4228793464107368822-9170855172291939624?l=justinberke.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://justinberke.blogspot.com/feeds/9170855172291939624/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4228793464107368822&amp;postID=9170855172291939624' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/9170855172291939624'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/9170855172291939624'/><link rel='alternate' type='text/html' href='http://justinberke.blogspot.com/2010/01/essay-on-interpolation.html' title='An Essay on Spatial Interpolation'/><author><name>Justin</name><uri>http://www.blogger.com/profile/13405139779467188945</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VJ2U8mMqPfU/SoSptGXK8iI/AAAAAAAABOQ/qRpz6nqiK7k/S220/pic.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4228793464107368822.post-4140672770647308540</id><published>2010-01-14T12:47:00.000-05:00</published><updated>2010-01-14T12:47:03.316-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GIS'/><category scheme='http://www.blogger.com/atom/ns#' term='research'/><category scheme='http://www.blogger.com/atom/ns#' term='geography'/><category scheme='http://www.blogger.com/atom/ns#' term='essay'/><title type='text'>An Essay on Uncertainty in Spatial Data Integration</title><content type='html'>Spatial data come in a variety of forms from oral or text descriptions and values, to any number of digital representations of the real world.&amp;nbsp; There are a plethora of techniques used to describe the world in space through raster and vector data alone.&amp;nbsp; The quality of such data however can be described by addressing four key factors.&amp;nbsp; Accuracy measures how close data can matches true values and descriptions.&amp;nbsp; Not all values can be exactly measured.&amp;nbsp; Due to human error or the detection/precision limits of equipment accuracy can easily be skewed.&amp;nbsp; Accuracy however, is largely associated with scale – decreasing scale increases accuracy.&amp;nbsp; Precision – reproducible performance qualities – measures how exactly data measured and stored.&amp;nbsp; In an assessment using high precision, several errors can be repeated with similar patterns of the same error, however low precision will yield little or no representation to the original error.&amp;nbsp; Error is a typical deviation or variation from reality.&amp;nbsp; Finally, uncertainty is the overall doubt or lack of confidence in data.&amp;nbsp; Though error and uncertainty are similar, the discrepancies are known and can possibly be avoided, where uncertainty deals with the absence of knowing the truth of a situation.&amp;nbsp; Moreover, spatial data quality is a measure of how well GIS data represent reality.&lt;br /&gt;&lt;br /&gt;Due to the fact that a map is a model of reality and that model can never be a completely valid representation of reality, it is important to expect a certain level of uncertainty when working on a project as a quality control or assurance method.&amp;nbsp; Further, the differences in data types that are attempting to represent the same real-world features inherently exhibit a degree of variation.&amp;nbsp; For instance a raster image and a vector representation of the same coastline will align separately; by any number of spatial units.&amp;nbsp; Adjusting the scale at which the features are obtained may alleviate this misalignment.&amp;nbsp; Combining vector data digitized separately will rarely align perfectly.&amp;nbsp; Thus, combining two such coverages will result in sliver polygons, disconnected vertices, or polyline dangles.&amp;nbsp; It will be necessary to use overlay tools – such as a spatial join, union, etc. – to aggregate datasets while avoiding unwanted errors.&lt;br /&gt;&lt;br /&gt;Storing information in metadata files is another powerful method that can be used to track errors that are present in GIS application.&amp;nbsp; Metadata is a means of recording information about a given dataset.&amp;nbsp; It can describe, among many other matters and parameters, which methods have been used to capture data in a coverage.&amp;nbsp; Providing such information can easily and efficiently inform others who use the dataset what he or she should anticipate as far as what deviation or error occur.&amp;nbsp; A lecture in class discussed how improvement in awareness of data quality is necessary, as data quality can have large impacts on geographic data analysis if it is not addressed properly; or even overlooked entirely.&lt;br /&gt;&lt;br /&gt;Scale is another issue that may assist in the avoidance of uncertainty.&amp;nbsp; Determining an appropriate level at which any error that may occur in a dataset will be minimized is a sure way to improve the accuracy of a dataset.&lt;br /&gt;&lt;br /&gt;Controlled uncertainty is another spatial data quality issue that works in inverse from the previously discussed methods.&amp;nbsp; Deliberate degradation of data is used as a mechanism for protecting the data at hand, whether a dataset covers records, or locations whose location or confidentiality may be guarded.&amp;nbsp; The Fisher reading summarizes well that analysis performed on a project without accommodating for uncertainty will have significantly degrade its validity, and therefore its usefulness is questionable.&amp;nbsp; By planning for a certain degree of error, it is possible to continue to create valid results.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4228793464107368822-4140672770647308540?l=justinberke.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://justinberke.blogspot.com/feeds/4140672770647308540/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4228793464107368822&amp;postID=4140672770647308540' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/4140672770647308540'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/4140672770647308540'/><link rel='alternate' type='text/html' href='http://justinberke.blogspot.com/2010/01/essay-on-uncertainty-in-spatial-data.html' title='An Essay on Uncertainty in Spatial Data Integration'/><author><name>Justin</name><uri>http://www.blogger.com/profile/13405139779467188945</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VJ2U8mMqPfU/SoSptGXK8iI/AAAAAAAABOQ/qRpz6nqiK7k/S220/pic.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4228793464107368822.post-5410492248724782885</id><published>2009-12-20T01:24:00.000-05:00</published><updated>2009-12-20T01:24:31.553-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GIS'/><category scheme='http://www.blogger.com/atom/ns#' term='cartography'/><category scheme='http://www.blogger.com/atom/ns#' term='computer bricka-brack'/><title type='text'>AM/FM/GIS</title><content type='html'>Automated Mapping/Facilities Management Systems seem to have been GIS's older cousin, developed to spatially display and manage attribute information of associated with an infrastructure network (electricity, gas, sewers, etc.).&amp;nbsp; This type of software is composed of a graphics engine for rendering spatial information combined with a relational database management component.&amp;nbsp; An example software title is the GE Energy Smallworld suite.&lt;br /&gt;&lt;br /&gt;There's a decent history and evolution in this 2003 ESRI white paper:&lt;br /&gt;&lt;a href="http://www.esri.com/library/whitepapers/pdfs/utility-gis.pdf"&gt;Utility GIS-More Than Just AM/FM&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Also see &lt;a href="http://en.wikipedia.org/wiki/AM/FM/GIS"&gt;AM/FM/GIS on Wikipedia&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4228793464107368822-5410492248724782885?l=justinberke.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://justinberke.blogspot.com/feeds/5410492248724782885/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4228793464107368822&amp;postID=5410492248724782885' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/5410492248724782885'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/5410492248724782885'/><link rel='alternate' type='text/html' href='http://justinberke.blogspot.com/2009/12/amfmgis.html' title='AM/FM/GIS'/><author><name>Justin</name><uri>http://www.blogger.com/profile/13405139779467188945</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VJ2U8mMqPfU/SoSptGXK8iI/AAAAAAAABOQ/qRpz6nqiK7k/S220/pic.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4228793464107368822.post-7685245153366535096</id><published>2009-12-19T03:19:00.009-05:00</published><updated>2010-07-05T09:23:10.590-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tool'/><category scheme='http://www.blogger.com/atom/ns#' term='GIS'/><category scheme='http://www.blogger.com/atom/ns#' term='visualization'/><category scheme='http://www.blogger.com/atom/ns#' term='VB'/><category scheme='http://www.blogger.com/atom/ns#' term='customization'/><category scheme='http://www.blogger.com/atom/ns#' term='projection'/><category scheme='http://www.blogger.com/atom/ns#' term='ArcObjects'/><category scheme='http://www.blogger.com/atom/ns#' term='efficiency'/><category scheme='http://www.blogger.com/atom/ns#' term='coding'/><title type='text'>Quick Zoom Tools</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_VJ2U8mMqPfU/Sye5QvdEicI/AAAAAAAABcc/ahGXhwmIPZA/s1600-h/CustomZoomTools01+-+toolbar.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_VJ2U8mMqPfU/Sye5QvdEicI/AAAAAAAABcc/ahGXhwmIPZA/s320/CustomZoomTools01+-+toolbar.gif" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;Download the icons &amp;amp; code package:&lt;br /&gt;&lt;a href="http://sites.google.com/site/nerdtips/home/CustomZoomTools.zip"&gt;Custom Zoom Tools.zip&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;The Bookmarks feature in ArcMap is great for navigating to a saved view, composed of a specific location and scale in a mapping project, however I'm working on a project where I want to zoom to a predefined map scale (1:5,000, 1:30,000, or 1:100,000), but I do not want to change the location.&amp;nbsp; In this case, Bookmarks are not the answer, so I built three buttons that change the Map Scale with a single click.&lt;br /&gt;&lt;br /&gt;Having this single click option saves up to a couple seconds of looking for an appropriate scale each time a button is used instead of scrolling, switching to the Zoom In/Out tools, or typing a scale unit manually.&amp;nbsp; It would be much faster (especially over the time span of an editing project) to use "map scale bookmarks" to automatically zoom to a predefined level.&lt;br /&gt;&lt;br /&gt;Three specific scales are chosen to represent three general views:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;1:5,000 is a decent large-scale to use for detailed neighborhood-level observations and to zoom in close enough to get a good look at braided stream segments&lt;br /&gt;&lt;/li&gt;&lt;li&gt;1:30,000 is an effective medium-scale to use for viewing larger areas, while the user is still able to distinguish smaller anomalies in a coverage or in imagery&lt;/li&gt;&lt;li&gt;1:100,000 offers a much larger visible area.&amp;nbsp; For projects that stretch over wide areas, this map scale offers a quick step back to pan across the city/county, etc.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Remember, in cartography "large-scale" refers to larger quotients which are less than, but approach the one.&amp;nbsp; So as the denominator decreases, scale increases:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;1:5,000 = "One-to-five thousand" = 1/5,000 = "One divided by five thousand" = 0.0002&lt;/li&gt;&lt;li&gt;Similarily, 1:30,000 = 0.00003&lt;/li&gt;&lt;li&gt;0.0002 &amp;gt; 0.00003, thus 1:5,000 is a &lt;b&gt;larger&lt;/b&gt; scale than 1:30,000&lt;/li&gt;&lt;li&gt;Further, 1:1 = 1.0, and 1:2 = 0.5, thus 1:1: is larger than 1:2&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;&lt;i&gt;Installation:&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Download and unzip the installation package, containing three bitmap icons, and a text file containing the code: &lt;a href="http://justin.berke.googlepages.com/CustomZoomTools.zip"&gt;Custom Zoom Tools.zip&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Move the three bitmap files to C:\Program Files\ArcGIS\Bin\Icons or C:\arcgis\Bin\Icons (depending on your installation)&lt;/li&gt;&lt;li&gt;Open the text file &lt;i&gt;Custom Zoom Tools Code.txt&lt;/i&gt;. Select All and Copy the text.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Open ArcMap and load either a saved project or a blank document&lt;/li&gt;&lt;li&gt;From the Tools menu, choose Customize.&amp;nbsp;&amp;nbsp;&lt;/li&gt;&lt;li&gt;Navigate to the bottom of the Categories list and select &lt;br /&gt;[ UIControls ]&lt;/li&gt;&lt;li&gt;Make sure that the Save In menu at the bottom left of the Customize dialog is set to Normal.mxt &lt;/li&gt;&lt;li&gt;Press the New UIControl button and Create a UIButtonControl.&amp;nbsp; Repeat this two more times so the Commands list has three new UIButtonControls&lt;/li&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_VJ2U8mMqPfU/SyyAWMXwBpI/AAAAAAAABdY/uK0_bSdxYl0/s1600-h/CustomZoomTools02+-+Customize.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_VJ2U8mMqPfU/SyyAWMXwBpI/AAAAAAAABdY/uK0_bSdxYl0/s320/CustomZoomTools02+-+Customize.gif" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;ul&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_VJ2U8mMqPfU/Syx8qm3sXvI/AAAAAAAABdM/mlh4pKC3UNk/s1600-h/CustomZoomTools03+-+NewUI.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_VJ2U8mMqPfU/Syx8qm3sXvI/AAAAAAAABdM/mlh4pKC3UNk/s320/CustomZoomTools03+-+NewUI.gif" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Slow double click on each of the new button controls in the Commands list to rename them Zoom5k, Zoom10k, and Zoom100k.&amp;nbsp; The names will automatically change to Normal.Zoom5k, etc. when finished.&amp;nbsp; The names of these are important and must match exactally to work with the code.&lt;/li&gt;&lt;li&gt;Drag these three new button controls onto a desired toolbar (I put mine next to the Map Scale box)&lt;/li&gt;&lt;li&gt;With the Customize dialog still open, right click on each button and navigate to Change Button Image :: Browse.&amp;nbsp; Choose the appropriate icon ("_Zoom5k" etc.) for each button&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_VJ2U8mMqPfU/Sye5QvdEicI/AAAAAAAABcc/ahGXhwmIPZA/s1600-h/CustomZoomTools01+-+toolbar.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_VJ2U8mMqPfU/Sye5QvdEicI/AAAAAAAABcc/ahGXhwmIPZA/s320/CustomZoomTools01+-+toolbar.gif" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Close the Customize dialog &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Now just paste the code in the correct spot to finish:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Open the Visual Basic Editor by pressing Alt + F11, or by navigating to Tools :: Macros :: Visual Basic Editor&lt;/li&gt;&lt;li&gt;In the Project Explorer pane, expand "Normal (Normal.mxt)," and "ArcMap Objects" and double click on ThisDocument.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_VJ2U8mMqPfU/SyyFS3Xg-5I/AAAAAAAABdg/O0Et-9arOQY/s1600-h/CustomZoomTools04+-+Normal.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_VJ2U8mMqPfU/SyyFS3Xg-5I/AAAAAAAABdg/O0Et-9arOQY/s320/CustomZoomTools04+-+Normal.gif" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;A window will open named "Normal.mxt - ThisDocument (Code)."&amp;nbsp;&amp;nbsp; Scroll to the bottom of this text, add a few lines by hitting enter a few times, and paste all of the code from the text file included in the download above&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Save this document of code, close the Visual Basic Editor and test the buttons.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;i&gt;&lt;b&gt;The Code:&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;In the following example a few elements are prepared to change the map scale, the map scale is set to 1:5000 (&lt;span style="font-size: small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;pMap.MapScale = 5000&lt;/span&gt;&lt;/span&gt;), and the map is refreshed so the new map scale will be visible to the user:&lt;br /&gt;&lt;br /&gt;&lt;code&gt; &lt;span style="color: blue;"&gt;Private Sub&lt;/span&gt; Zoom5k_Click()&lt;br /&gt;&lt;span style="color: #38761d;"&gt;'Change the scale of the current view to 1:5,000&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;Dim&lt;/span&gt; pMxDocument &lt;span style="color: blue;"&gt;As&lt;/span&gt; IMxDocument&lt;br /&gt;&lt;/code&gt;&lt;code&gt;&lt;span style="color: blue;"&gt;Dim&lt;/span&gt; &lt;/code&gt;&lt;code&gt;pMaps &lt;/code&gt;&lt;code&gt;&lt;span style="color: blue;"&gt;As&lt;/span&gt; &lt;/code&gt;&lt;code&gt;IMaps&lt;/code&gt;&lt;code&gt;&lt;span style="color: blue;"&gt;&lt;br /&gt;Dim&lt;/span&gt; &lt;/code&gt;&lt;code&gt;pMap &lt;/code&gt;&lt;code&gt;&lt;span style="color: blue;"&gt;As&lt;/span&gt; &lt;/code&gt;&lt;code&gt;IMap&lt;/code&gt;&lt;code&gt;&lt;span style="color: blue;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;span style="color: blue;"&gt;Set&lt;/span&gt; pMxDocument = ThisDocument&lt;br /&gt;&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;span style="color: blue;"&gt;Set&lt;/span&gt; &lt;/code&gt;&lt;code&gt;pMaps = pMxDocument.Maps&lt;br /&gt;&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;span style="color: blue;"&gt;Set&lt;/span&gt; &lt;/code&gt;&lt;code&gt;pMap = &lt;/code&gt;&lt;code&gt;pMxDocument&lt;/code&gt;&lt;code&gt;.FocusMap&lt;/code&gt;&lt;br /&gt;&lt;code&gt;pMap.DistanceUnits = esriUnits.esriInches&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;pMap.MapScale = 5000&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;pMxDocument.ActiveView.Refresh&lt;span style="color: blue;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;span style="color: blue;"&gt;End Sub&lt;/span&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4228793464107368822-7685245153366535096?l=justinberke.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://justinberke.blogspot.com/feeds/7685245153366535096/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4228793464107368822&amp;postID=7685245153366535096' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/7685245153366535096'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/7685245153366535096'/><link rel='alternate' type='text/html' href='http://justinberke.blogspot.com/2009/12/quick-zoom-tools.html' title='Quick Zoom Tools'/><author><name>Justin</name><uri>http://www.blogger.com/profile/13405139779467188945</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VJ2U8mMqPfU/SoSptGXK8iI/AAAAAAAABOQ/qRpz6nqiK7k/S220/pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_VJ2U8mMqPfU/Sye5QvdEicI/AAAAAAAABcc/ahGXhwmIPZA/s72-c/CustomZoomTools01+-+toolbar.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4228793464107368822.post-3218829941304816338</id><published>2009-11-18T00:10:00.028-05:00</published><updated>2011-02-03T15:50:54.104-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GIS'/><category scheme='http://www.blogger.com/atom/ns#' term='Excel'/><category scheme='http://www.blogger.com/atom/ns#' term='data manipulation'/><category scheme='http://www.blogger.com/atom/ns#' term='computer bricka-brack'/><category scheme='http://www.blogger.com/atom/ns#' term='math'/><title type='text'>Angular Unit Conversion - DD, DMS, Radians</title><content type='html'>It's important to know how to convert back and forth between various units of angular measurement.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 130%; font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;Degrees, Minutes, Seconds to Decimal Degrees (DMS to DD):&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: 130%;"&gt;&lt;b&gt;&lt;img alt="DD = Degrees + (Minutes/60) + (Seconds/3600)" class="ee_img tr_noresize" eeimg="1" src="https://www.google.com/chart?cht=tx&amp;amp;chf=bg,s,FFFFFF00&amp;amp;chco=000000&amp;amp;chl=DD%20%3D%20Degrees%20%2B%20%28Minutes%2F60%29%20%2B%20%28Seconds%2F3600%29" style="height: 20px; vertical-align: middle; width: 386px;" /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;If you put this in terms of a clock, where a degree equals one hour of time (and there are 360 hours in a complete cycle of a day), it becomes easier to understand how minutes and seconds work in relation to the degree.  There are sixty minutes in an hour (or one degree), and also there are sixty seconds in a minute.  Thus, 60 seconds times 60 minutes equals 3600 seconds in an hour (or in one degree of angular measurement).  Now just add these together.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;iframe frameborder="0" height="137" src="https://spreadsheets.google.com/pub?key=0AmPoR3Z1imR-dG5ULVg2MEZvaE14NEJkX0xVczc5Y0E&amp;amp;hl=en&amp;amp;single=true&amp;amp;gid=0&amp;amp;range=A1%3AF5&amp;amp;output=html&amp;amp;widget=true" width="410"&gt;&lt;/iframe&gt;&lt;/center&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;b&gt;Note: &lt;/b&gt;When working with locations west of the prime meridian, longitude values may be represented with negative numbers (-84° in this case). The formula should use subtractions (-) instead of addition (+) (line 3), or the entire formula must be multiplied by -1 as a final step (line 4).&amp;nbsp; Note the "abs()" function which temporarily converts the negative value to a positive number so the addition signs can be used.&amp;nbsp; In short, be extra aware of your data and the formulas used to convert between these units.&lt;/blockquote&gt;&lt;br /&gt;&lt;span style="font-size: 130%;"&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;Decimal Degrees to Degrees, Minutes, Seconds (DD to DMS):&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;This conversion is a bit more tricky because the minutes and seconds are combined and packed into the decimal.&lt;br /&gt;&lt;br /&gt;For the DD value 30.443452º&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Anything to the left of the decimal is the full degree value&lt;br /&gt;D = 30º&lt;/li&gt;&lt;li&gt;Multiply the decimal value by 60 to find the minutes.  The value will be between zero and 59.999.  The minutes value will be what is in front of the decimal again.&lt;br /&gt;M = 26' because 0.443452 * 60 = 26.60712&lt;/li&gt;&lt;li&gt;Multiply the minutes decimal value by 60 to find the decimal seconds value.  Again, it will be between zero and 59.999, as there are 60 seconds in a minute.  Decimal seconds are acceptable.&lt;/li&gt;&lt;li&gt;S = 36.4272" = 60 * 0.60712&lt;/li&gt;&lt;/ul&gt;To pull this off in a spreadsheet, create an intermediate "Calculate Minutes" field, which is referenced to build the Minutes and Seconds fields.  Negative numbers require an additional step (see below).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;iframe frameborder="0" height="120" src="http://spreadsheets.google.com/pub?key=tnT-X60FohMx4Bd_LUs79cA&amp;amp;single=true&amp;amp;gid=3&amp;amp;output=html&amp;amp;widget=true" width="431"&gt;&lt;/iframe&gt;&lt;/center&gt;&lt;br /&gt;Negative numbers will have a leading third character to deal with in front of the decimal.  First, sort the dataset so these can be dealt with as a group.  Change Degrees formula from =left(*Cell*, 2) to =left(*Cell*, 3) for all negative values.  That's it.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 130%;"&gt;&lt;span style="font-style: italic; font-weight: bold;"&gt;DD to Radians to DD:&lt;br /&gt;&lt;center&gt;&lt;img border="0" src="http://upload.wikimedia.org/wikipedia/commons/thumb/3/3d/Radian_cropped_color.svg/180px-Radian_cropped_color.svg.png" /&gt;&lt;/center&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Radians are another unit of angular measurement, used most often in all but basic applications of geometry. So what is a radian?&amp;nbsp; It's the arc distance between two points on a circle where an angle intersects, equal to the circle's radius (&lt;a href="http://en.wikipedia.org/wiki/Radian"&gt;Wikipedia&lt;/a&gt;).  It's the unit of measure used to calculate a number of Excel formulas, so it's important to understand what it means, and at the very least how to use it.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;img border="0" src="http://upload.wikimedia.org/math/c/5/7/c57a77f5af3b16eae6b37447051d9684.png" /&gt;&lt;br /&gt;&lt;img border="0" src="http://upload.wikimedia.org/math/4/6/8/468c9b2217988607c60dbe6586c44975.png" /&gt;&lt;br /&gt;&lt;img border="0" src="http://upload.wikimedia.org/math/c/8/8/c88cb1b5f6017632d4c34c414e5d176c.png" /&gt;&lt;/center&gt;&lt;br /&gt;DD to radians:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;iframe frameborder="0" height="120" src="http://spreadsheets.google.com/pub?key=tnT-X60FohMx4Bd_LUs79cA&amp;amp;single=true&amp;amp;gid=2&amp;amp;range=A1%3AD4&amp;amp;output=html&amp;amp;widget=true" width="315"&gt;&lt;/iframe&gt;&lt;/center&gt;&lt;br /&gt;Or radians to DD:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;iframe frameborder="0" height="119" src="http://spreadsheets.google.com/pub?key=tnT-X60FohMx4Bd_LUs79cA&amp;amp;single=true&amp;amp;gid=2&amp;amp;range=A5%3AD8&amp;amp;output=html&amp;amp;widget=true" width="315"&gt;&lt;/iframe&gt;&lt;/center&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4228793464107368822-3218829941304816338?l=justinberke.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://justinberke.blogspot.com/feeds/3218829941304816338/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4228793464107368822&amp;postID=3218829941304816338' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/3218829941304816338'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/3218829941304816338'/><link rel='alternate' type='text/html' href='http://justinberke.blogspot.com/2009/11/angular-unit-conversion-dd-dms-radians.html' title='Angular Unit Conversion - DD, DMS, Radians'/><author><name>Justin</name><uri>http://www.blogger.com/profile/13405139779467188945</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VJ2U8mMqPfU/SoSptGXK8iI/AAAAAAAABOQ/qRpz6nqiK7k/S220/pic.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4228793464107368822.post-5634242370471868779</id><published>2009-11-13T20:50:00.029-05:00</published><updated>2009-11-16T15:51:03.176-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='app'/><category scheme='http://www.blogger.com/atom/ns#' term='tool'/><category scheme='http://www.blogger.com/atom/ns#' term='VB'/><category scheme='http://www.blogger.com/atom/ns#' term='coding'/><title type='text'>System Shut Down Utility</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VJ2U8mMqPfU/Sv4NU_Vew5I/AAAAAAAABZE/IdK_gO_5tdg/s1600-h/shutdown01.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 201px; height: 155px;" src="http://2.bp.blogspot.com/_VJ2U8mMqPfU/Sv4NU_Vew5I/AAAAAAAABZE/IdK_gO_5tdg/s400/shutdown01.gif" alt="" id="BLOGGER_PHOTO_ID_5403771257141248914" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;This is a very light utility that I coded in just a few hours.  It's purpose is to shut down the computer after a selected amount of time from the combo boxes (between 5 minutes to over 6 hours).  The simple .exe illustrates a few basic but useful VB techniques:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Setting up combo boxes &amp;amp; values&lt;/li&gt;&lt;li&gt;Global variables&lt;/li&gt;&lt;li&gt;A timer&lt;/li&gt;&lt;li&gt;Time / Date / Now functions&lt;/li&gt;&lt;li&gt;Call functions from other subroutines&lt;br /&gt;&lt;/li&gt;&lt;li&gt;and the main feature, automatically shut down the computer&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://justin.berke.googlepages.com/SystemShutdownUtility.zip"&gt;&lt;img src="http://justin.berke.googlepages.com/icon_zip.gif" border="0" /&gt;&lt;br /&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt;&lt;a href="http://justin.berke.googlepages.com/SystemShutdownUtility.zip"&gt;Download System ShutdownUtility.zip&lt;/a&gt;&lt;br /&gt;(6k zipped, 28k unzipped)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://justin.berke.googlepages.com/Source-ShutdownUtility.txt"&gt;Download the source code (.txt)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-style: italic;font-size:130%;" &gt;&lt;span style="font-weight: bold;"&gt;Instructions&lt;/span&gt;:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Download and unzip the package.  Rename if necessary (see Final Tricks, below)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Open the program.  The current date and time will display&lt;/li&gt;&lt;li&gt;Choose an amount of time from the Hours, and Minutes menus&lt;/li&gt;&lt;li&gt;Click "Commit" when ready.  You will be prompted to verify (Yes or No) that you are ready to begin, choose Yes to continue&lt;/li&gt;&lt;li&gt;The time will be updated to report when the count began, and the remaining time (in minutes) will update every 60 seconds.  When the time expires, the computer will automatically shut down.  That's all there is to it!&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Here are the guts of it:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;Combo Boxes&lt;/span&gt;:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;First, the contents of the pull down / combo boxes are set up in the &lt;span style=";font-family:courier new;font-size:85%;"  &gt;Form_Load()&lt;/span&gt; subroutine, thus the contents of each menu are loaded when the app starts.  Here's the code for the minutes list:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_VJ2U8mMqPfU/Sv4TwqKG5FI/AAAAAAAABZM/Kz6KBDRG2bA/s1600-h/shutdown02.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 201px; height: 182px;" src="http://1.bp.blogspot.com/_VJ2U8mMqPfU/Sv4TwqKG5FI/AAAAAAAABZM/Kz6KBDRG2bA/s400/shutdown02.gif" alt="" id="BLOGGER_PHOTO_ID_5403778329562506322" border="0" /&gt;&lt;/a&gt;&lt;code&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Private Sub &lt;/span&gt;Form_Load()&lt;br /&gt;cboMins.AddItem ""&lt;br /&gt;cboMins.ItemData(cboMins.NewIndex) = 0&lt;br /&gt;&lt;/code&gt;&lt;code&gt;  cboMins.AddItem "5"&lt;/code&gt;&lt;br /&gt;&lt;code&gt;  cboMins.ItemData(cboMins.NewIndex) = 5&lt;/code&gt;&lt;code&gt;&lt;br /&gt;cboMins.AddItem "15"&lt;br /&gt;&lt;/code&gt;&lt;code&gt;  cboMins.ItemData(cboMins.NewIndex) = 15&lt;/code&gt;&lt;br /&gt;&lt;code&gt;  cboMins.AddItem "30"&lt;br /&gt;&lt;/code&gt;&lt;code&gt;  cboMins.ItemData(cboMins.NewIndex) = 30&lt;/code&gt;&lt;br /&gt;&lt;code&gt;  cboMins.AddItem "45"&lt;br /&gt;&lt;/code&gt;&lt;code&gt;  cboMins.ItemData(cboMins.NewIndex) = 45&lt;/code&gt;&lt;code&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;'...&lt;/span&gt;&lt;br /&gt;&lt;/code&gt;&lt;code&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;End Sub&lt;/span&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-size:130%;" &gt;&lt;span style="font-weight: bold;"&gt;Global Variables&lt;/span&gt;:&lt;/span&gt;&lt;br /&gt;When the command button is clicked to run the program, the values from each of the combo boxes are passed to the &lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;intHours&lt;/span&gt;&lt;/span&gt;/&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;intMinutes &lt;/span&gt;&lt;/span&gt;variables which have been dimensioned in the General Declarations (the topmost portion of the code editor).  These can be called by various other functions to verify that a time has been selected (&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;intHours + intMinutes &gt; 0&lt;/span&gt;&lt;/span&gt;?), or to set the iterations of the timer, etc.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Option Explicit&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Dim &lt;/span&gt;intHours &lt;span style="color: rgb(51, 51, 255);"&gt;As Integer&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Dim &lt;/span&gt;intMinutes &lt;span style="color: rgb(51, 51, 255);"&gt;As Integer&lt;/span&gt;&lt;br /&gt;_____________________________&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Private Sub&lt;/span&gt; Form_Load()&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;'...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Georgia,serif;"&gt;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;The VB Timer, Shutdown, &amp;amp; Calling Subroutines&lt;/span&gt;:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Timers can be a little tricky in this situation, but they're basically simple.  There are two main properties: Enabled (on/off), and Interval (how long the timer runs).  It would be great to set the timer to run for 4 hours and 5 minutes, but that's not how it works.  The timer runs for a given number of milliseconds (1,000 milliseconds = 1 second) between 0 and 65,535 (just over 1 minute, 5 seconds).  Instead we'll make a variable that will represent the total number of desired minutes, and loop through ever second (&lt;span style=";font-family:courier new;font-size:85%;"  &gt;tmrShutDown.Interval = 60000&lt;/span&gt;) until the counter = 0; then run the desired procedure.&lt;br /&gt;&lt;br /&gt;First, add a Timer control (Visual Basic 6) to the form named &lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;tmrShutDown&lt;/span&gt;&lt;/span&gt;.  In &lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;Form_Load()&lt;/span&gt;&lt;/span&gt;, set the timer's Interval to 60000 (one minute) and make sure the timer is off as the app loads.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Private Sub &lt;/span&gt;Form_Load()&lt;br /&gt;tmrShutDown.Enabled = &lt;span style="color: rgb(51, 51, 255);"&gt;False&lt;/span&gt;&lt;br /&gt;&lt;/code&gt;&lt;code&gt;tmrShutDown.Interval = 60000&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;'...&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;End Sub&lt;/span&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;Before the timer is enabled (via the command button), set a predefined global variable (&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;intTime&lt;/span&gt;&lt;/span&gt;) to equal the amount of desired time in minutes.  Now tell the timer to start running.  Now when the timer is enabled, some code will run inside the timer's subroutine every 60 seconds (or 60,000 milliseconds); essentially as a loop. This will reiterate every 60 seconds until it is told to stop (&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;tmrControl.Enabled = &lt;span style="color: rgb(51, 51, 255);"&gt;False&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;).   Insert a simple if-then statement: If the time counter (&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;intTime&lt;/span&gt;&lt;/span&gt;) = zero, stop the timer and call the procedure to turn off the computer, otherwise, subtract one from the counter and continue.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Option Explicit&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Dim &lt;/span&gt;intHours &lt;span style="color: rgb(51, 51, 255);"&gt;As Integer&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Dim &lt;/span&gt;intMinutes &lt;span style="color: rgb(51, 51, 255);"&gt;As Integer&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Dim &lt;/span&gt;intTime &lt;span style="color: rgb(51, 51, 255);"&gt;As Integer&lt;/span&gt;&lt;br /&gt;&lt;/code&gt;&lt;code&gt;___________________________________________&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;code&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Private Sub &lt;/span&gt;cmdCommit_Click()&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;'...&lt;/span&gt;&lt;br /&gt;intTime = (intHours * 60) + intMinutes&lt;br /&gt;tmrShutDown.Enabled = &lt;span style="color: rgb(51, 51, 255);"&gt;True&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;'...&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;End Sub&lt;/span&gt;&lt;br /&gt;&lt;/code&gt;&lt;code&gt;___________________________________________&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;code&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Private Sub &lt;/span&gt;tmrCommand_Timer()&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;If &lt;/span&gt;intTime = 0 &lt;span style="color: rgb(51, 51, 255);"&gt;Then&lt;/span&gt;&lt;br /&gt;tmrCommand.Enabled = &lt;span style="color: rgb(51, 51, 255);"&gt;False &lt;/span&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;'Turn off timer&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Call &lt;/span&gt;ShutDown&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Else&lt;/span&gt;&lt;br /&gt;intTime = intTime - 1&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;End If&lt;/span&gt;  &lt;span style="color: rgb(51, 51, 255);"&gt;End Sub&lt;/span&gt;&lt;br /&gt;&lt;/code&gt;&lt;code&gt;___________________________________________&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;code&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Private Sub &lt;/span&gt;ShutDown()&lt;br /&gt;&lt;/code&gt;&lt;code&gt; Shell "shutdown -s -f -t 00"&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;'...&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;End Sub&lt;/span&gt;&lt;/code&gt;&lt;code style="color: rgb(51, 51, 255);"&gt;&lt;/code&gt;&lt;span style="color: rgb(51, 51, 255);font-family:monospace;" &gt;&lt;/span&gt;&lt;span style="font-style: italic;font-size:130%;" &gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Final Tricks&lt;/span&gt;:&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_VJ2U8mMqPfU/Sv5K1YPSWnI/AAAAAAAABZU/-m2TWZ4tqXM/s1600-h/shutdown03.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 201px; height: 155px;" src="http://4.bp.blogspot.com/_VJ2U8mMqPfU/Sv5K1YPSWnI/AAAAAAAABZU/-m2TWZ4tqXM/s400/shutdown03.gif" alt="" id="BLOGGER_PHOTO_ID_5403838883791264370" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;You might notice the odd title.  Combined that with a similar inconspicuous file name alteration, and the app can go quite unnoticed on a computer - which might be useful to certain users.&lt;br /&gt;&lt;br /&gt;Clicking the command button disables itself and both combo boxes to let the user know that it is working.&lt;br /&gt;&lt;br /&gt;Finally, two labels are updated to include a time that the timer started, and how much time is left before shutdown.  This should be updated in the timer's subroutine.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Private Sub &lt;/span&gt;cmdCommit_Click()&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;'...&lt;/span&gt;&lt;br /&gt;cboHours.Enabled = &lt;span style="color: rgb(51, 51, 255);"&gt;False&lt;/span&gt;&lt;br /&gt;cboMinutes.Enabled = &lt;/code&gt;&lt;code&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;False&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;cmdCommit.Enabled = &lt;/code&gt;&lt;code&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;False&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;lblInitial.Caption = "Initial Time: " &amp;amp; Now&lt;br /&gt;lblTimeLeft.Caption = "Time Remaining: " &amp;amp; intTime&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;End Sub&lt;/span&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4228793464107368822-5634242370471868779?l=justinberke.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://justinberke.blogspot.com/feeds/5634242370471868779/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4228793464107368822&amp;postID=5634242370471868779' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/5634242370471868779'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/5634242370471868779'/><link rel='alternate' type='text/html' href='http://justinberke.blogspot.com/2009/11/system-shut-down-utility.html' title='System Shut Down Utility'/><author><name>Justin</name><uri>http://www.blogger.com/profile/13405139779467188945</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VJ2U8mMqPfU/SoSptGXK8iI/AAAAAAAABOQ/qRpz6nqiK7k/S220/pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_VJ2U8mMqPfU/Sv4NU_Vew5I/AAAAAAAABZE/IdK_gO_5tdg/s72-c/shutdown01.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4228793464107368822.post-6946386013089530557</id><published>2009-11-13T16:47:00.002-05:00</published><updated>2009-11-16T13:47:47.723-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lol'/><title type='text'>Dihydrogen Monoxide Alert</title><content type='html'>&lt;p style="text-align: center;" class="mobile-photo"&gt;&lt;a href="http://2.bp.blogspot.com/_VJ2U8mMqPfU/Sv3RmtjQzSI/AAAAAAAABY8/j_yf116xVaA/s1600-h/1113091636-750798.jpg"&gt;&lt;img src="http://2.bp.blogspot.com/_VJ2U8mMqPfU/Sv3RmtjQzSI/AAAAAAAABY8/j_yf116xVaA/s320/1113091636-750798.jpg" alt="" id="BLOGGER_PHOTO_ID_5403705590907194658" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;A bottle of 99.93% pure DHMO (Dihydrogen Monoxide)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Dihydrogen Monoxide&lt;/span&gt;:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;may cause severe burns&lt;/li&gt;&lt;li&gt;is a major component of acid rain&lt;/li&gt;&lt;li&gt;has been found in excised tumors of terminal cancer patients&lt;/li&gt;&lt;li&gt;used in nuclear power plants&lt;/li&gt;&lt;li&gt;used in many forms of cruel animal research&lt;/li&gt;&lt;li&gt;may cause death by decreased effectiveness of automobile brakes&lt;/li&gt;&lt;/ul&gt;Dihydrogen monoxide is colorless, tasteless, and kills uncounted thousands of people every year. Most of these deaths are caused by accidental inhalation of DHMO but, in addition, prolonged exposure to its solid form causes severe tissue damage. Symptoms of DHMO ingestion can include excessive sweating and urination, and possibly a bloated feeling, nausea, vomiting, and body electrolyte imbalance. For those who have become dependent, DHMO withdrawal means certain death.&lt;br /&gt;&lt;br /&gt;Environmentalists across the world all agree that DHMO contamination is reaching epidemic proportions.&lt;br /&gt;&lt;br /&gt;Our water: Quantities of DHMO have been found in every stream, lake, and reservoir in America today and now the pollution has also been confirmed in the Antartic ice. Despite theis, spokesmen for big business &amp;amp; government still claim that the public has nothing to worry about. Yet companies continue to dump waste DHMO into rivers and the oceans, and nothing can be done to stop them.&lt;br /&gt;&lt;br /&gt;Our food: DHMO is used in the distribution of pesticides.  Even after washing, produce remains contaminated by this chemical.&lt;br /&gt;&lt;br /&gt;Dihydrogen monoxide is also known as hydroxyl acid, hydrogen hydroxide, or tap water.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4228793464107368822-6946386013089530557?l=justinberke.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://justinberke.blogspot.com/feeds/6946386013089530557/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4228793464107368822&amp;postID=6946386013089530557' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/6946386013089530557'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/6946386013089530557'/><link rel='alternate' type='text/html' href='http://justinberke.blogspot.com/2009/11/dihydrogen-monozide-alert.html' title='Dihydrogen Monoxide Alert'/><author><name>Justin</name><uri>http://www.blogger.com/profile/13405139779467188945</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VJ2U8mMqPfU/SoSptGXK8iI/AAAAAAAABOQ/qRpz6nqiK7k/S220/pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_VJ2U8mMqPfU/Sv3RmtjQzSI/AAAAAAAABY8/j_yf116xVaA/s72-c/1113091636-750798.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4228793464107368822.post-3744253625605654065</id><published>2009-10-31T17:00:00.004-04:00</published><updated>2009-11-05T00:27:27.908-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lol'/><category scheme='http://www.blogger.com/atom/ns#' term='modeling'/><title type='text'>Modeling Life Effectively Disproves Zombies</title><content type='html'>Zombies are on fire right now.  From &lt;a href="http://www.youtube.com/watch?v=jxWRNfad56M"&gt;Zombie Nation&lt;/a&gt; to &lt;a href="http://www.imdb.com/title/tt1156398/"&gt;Zombieland&lt;/a&gt;, it's clear that our culture has fully embraced the concept of &lt;a href="http://www.huffingtonpost.com/2009/08/06/anti-obama-protester-comp_n_252815.html"&gt;mindless drones&lt;/a&gt; living among everyday citizens.  Thanks (no thanks) to the Twilight series for the assist in making the whole monsters in society thing acceptable (to high school girls; whose boyfriends are dragged along to the movie and have to suffer through listening to every other girl drool over the meth'ed up characters in that story).&lt;br /&gt;&lt;br /&gt;To this trend I say, NO!  I'm calling shenanigans on zombies.  Here's why:&lt;br /&gt;&lt;br /&gt;What is a zombie?  Is it a virus? Dawn of the Dead, the 28 Days Laters, I am Legend, etc. would suggest that it is.  We'll go ahead and say yes.  There are plenty of models that predict dispersion patterns of viruses in society, but we can work at an even more basic level than this.&lt;br /&gt;&lt;br /&gt;Is a zombie still a human? Dawn of the Dead: No.  &lt;span style="font-style: italic;"&gt;Shawn &lt;/span&gt;of the Dead: Yes - &lt;span style="font-style: italic;"&gt;AND&lt;/span&gt; you can play video games with them.  Essentially, zombies are known as the "living dead," so I'll begin modeling from here to highlight the two main physical differences between humans and zombies.&lt;br /&gt;&lt;br /&gt;Humans are inefficient machines.  We emit about 150 watts of energy as overall body heat.  Although it would be more efficient to be cold blooded, we found certain advantages to remaining mobile and having an active metabolism when it gets cold. Further, the brain functions by sending around 20-40 watts of electrical signals around itself and throughout the rest of the body.  When a zombie bites, a victim's body temperature drops and organs begin to fail.  Other than the whole craving brains/flesh thing, the life of the human ends, thus the following model is developed:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VJ2U8mMqPfU/Su5WJN4tCHI/AAAAAAAABWk/pxusFOZVfT4/s1600-h/zombies02.gif"&gt;&lt;img style="cursor: pointer; width: 375px; height: 54px;" src="http://2.bp.blogspot.com/_VJ2U8mMqPfU/Su5WJN4tCHI/AAAAAAAABWk/pxusFOZVfT4/s400/zombies02.gif" alt="" id="BLOGGER_PHOTO_ID_5399347719610108018" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;The life model disprove zombies&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Translated: A life is equal to a the sum of all days where the energy of ones body approaches 150 watts, &lt;span style="font-style: italic;"&gt;and &lt;/span&gt;the energy of said brain approaches 20 watts.  This is valid from a person's birth day to the n&lt;sup&gt;th&lt;/sup&gt; day of an individual's life, otherwise known as a "life span" (L&lt;sub&gt;s&lt;/sub&gt; - see below):&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_VJ2U8mMqPfU/Su5WI9-z1UI/AAAAAAAABWc/40j_-TX1AxQ/s1600-h/zombies01.gif"&gt;&lt;img style="cursor: pointer; width: 111px; height: 28px;" src="http://3.bp.blogspot.com/_VJ2U8mMqPfU/Su5WI9-z1UI/AAAAAAAABWc/40j_-TX1AxQ/s400/zombies01.gif" alt="" id="BLOGGER_PHOTO_ID_5399347715340752194" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;A life span is limited to n days&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Thus, it is impossible for a being to operate once a brain ceases to function due to a lack of energy production of its carrying body.  This goes for "infected" humans or other animals.  There is probably a better metric of brain activity that I could use, but I figure this model gets the point across.&lt;br /&gt;&lt;br /&gt;This is most importantly applicable when faced with a "I don't have time to zombify this costume" situation.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4228793464107368822-3744253625605654065?l=justinberke.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://justinberke.blogspot.com/feeds/3744253625605654065/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4228793464107368822&amp;postID=3744253625605654065' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/3744253625605654065'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/3744253625605654065'/><link rel='alternate' type='text/html' href='http://justinberke.blogspot.com/2009/10/modeling-life-effectively-disproves.html' title='Modeling Life Effectively Disproves Zombies'/><author><name>Justin</name><uri>http://www.blogger.com/profile/13405139779467188945</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VJ2U8mMqPfU/SoSptGXK8iI/AAAAAAAABOQ/qRpz6nqiK7k/S220/pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_VJ2U8mMqPfU/Su5WJN4tCHI/AAAAAAAABWk/pxusFOZVfT4/s72-c/zombies02.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4228793464107368822.post-6785825545941763683</id><published>2009-10-23T20:28:00.000-04:00</published><updated>2009-10-24T03:54:00.664-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GIS'/><category scheme='http://www.blogger.com/atom/ns#' term='fail'/><category scheme='http://www.blogger.com/atom/ns#' term='computer bricka-brack'/><title type='text'>Office 2007, you're pushing my buttons! / Micosoft Inefficiency .NET</title><content type='html'>This is unacceptable!  A mail client should not use the same amount of resources as GIS software.  I am convinced that Outlook 2007 is making my other programs crash.  &lt;a href="http://justinberke.blogspot.com/2009/06/microsoft-office-2007-fail.html"&gt;I've said it before&lt;/a&gt;, and I'll say it again.  Office 2007 missed the mark.&lt;br /&gt;&lt;br /&gt;Here is a screenshot of my ArcMap editing session:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_VJ2U8mMqPfU/SpbiUc3qGkI/AAAAAAAABPs/acGSfMsABww/s1600-h/office2007_project.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 128px;" src="http://4.bp.blogspot.com/_VJ2U8mMqPfU/SpbiUc3qGkI/AAAAAAAABPs/acGSfMsABww/s320/office2007_project.JPG" alt="" id="BLOGGER_PHOTO_ID_5374732046288165442" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I am running Windows Media Player in the background with with 200+ songs on the playlist (topping out around 20,000 k of memory usage).  I am assuming WMP references the  songs via a list rather than caching all the 855 MB of files, however my media player is using fewer resources than my mail client is using.&lt;br /&gt;&lt;br /&gt;Outlook is hogging just short of the almost 200,000 k that ArcMap uses - and it's just sitting there:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VJ2U8mMqPfU/So75hy7-pxI/AAAAAAAABPY/dSeYMJnFdpo/s1600-h/processing.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 379px; height: 400px;" src="http://2.bp.blogspot.com/_VJ2U8mMqPfU/So75hy7-pxI/AAAAAAAABPY/dSeYMJnFdpo/s400/processing.JPG" alt="" id="BLOGGER_PHOTO_ID_5372505764503922450" border="0" /&gt;&lt;/a&gt;Rather than trying to make Office and Windows look like a Mac, why doesn't Microsoft take what they already have a make it more efficient?  After that, go ahead and add the neat little trinkets (about which I honestly couldn't care less).  There is absolutely no reason for my mail client to use such vast amounts of memory and processing power to sit there and ding a few dozen times a day.&lt;br /&gt;&lt;br /&gt;Personal computer technology continues to increase at a terrific rate, and the price of powerful and small computers is steadily decreasing.  The average user (non-tech/home computer user) seems to be utilizing web-based resources more and more.  Other than gaming, I can only think of a few other examples of power users who need very elite computers: photo/graphics editors and video editors.&lt;br /&gt;&lt;br /&gt;Taking advantage of this by writing software that runs efficiently would allow one to use a computer for more than a few years without it being bogged down (I'm looking at you, Windows XP).  It takes my laptop a few minutes to open Mozilla.  MINUTES!  That is just stupid.&lt;br /&gt;&lt;br /&gt;Instead, Microsoft continues to write clunky software that needlessly hogs computing resources so when the computer seems to become "out of date" in a year or two, unknowing consumers will go out and buy another laptop with a new and even more inefficient version of Windows products.  This seems like &lt;a href="http://en.wikipedia.org/wiki/Planned_obsolescence"&gt;planned obsolesence&lt;/a&gt;.  Lame.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://i.cmpnet.com/informationweek/reviews/linux/vvl_ubuntulogo.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 202px; height: 55px;" src="http://i.cmpnet.com/informationweek/reviews/linux/vvl_ubuntulogo.jpg" alt="" border="0" /&gt;&lt;/a&gt;Well, I'm glad to see that Dell (and others I'm sure) is giving the option for new computers to be loaded with the free &lt;a href="http://www.ubuntu.com/"&gt;Ubuntu&lt;/a&gt; (Linux) OS.  I've been meaning to give Linux a try.  Even worse, another option is to "downgrade to Windows XP" on new systems.  Fail.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4228793464107368822-6785825545941763683?l=justinberke.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://justinberke.blogspot.com/feeds/6785825545941763683/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4228793464107368822&amp;postID=6785825545941763683' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/6785825545941763683'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/6785825545941763683'/><link rel='alternate' type='text/html' href='http://justinberke.blogspot.com/2009/10/office-2007-youre-pushing-my-buttons.html' title='Office 2007, you&apos;re pushing my buttons! / Micosoft Inefficiency .NET'/><author><name>Justin</name><uri>http://www.blogger.com/profile/13405139779467188945</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VJ2U8mMqPfU/SoSptGXK8iI/AAAAAAAABOQ/qRpz6nqiK7k/S220/pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_VJ2U8mMqPfU/SpbiUc3qGkI/AAAAAAAABPs/acGSfMsABww/s72-c/office2007_project.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4228793464107368822.post-1671983900947661342</id><published>2009-10-23T14:20:00.000-04:00</published><updated>2009-10-23T14:25:17.967-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tool'/><category scheme='http://www.blogger.com/atom/ns#' term='GIS'/><category scheme='http://www.blogger.com/atom/ns#' term='fail'/><category scheme='http://www.blogger.com/atom/ns#' term='customization'/><title type='text'>Intro to Customizing ArcGIS Desktop, Toolbars, and Normal.mxt</title><content type='html'>While attempting to build a (forthcoming) custom tool for my ArcGIS environment, I encountered a problem:  I cannot save my new custom toolbar to Normal.mxt.  Every time I close and re-open ArcMap, the toolbar does not return.&lt;br /&gt;&lt;br /&gt;I am attempting to construct a toolbar to use in my default environment, so naturally I begin working in a blank (Untitled) .mxd document.  This is probably a problem: it seems that Normal.mxt is updated when the .mxd is saved or closed, so I'll start by creating a local project so the "save" command can be called.&lt;br /&gt;&lt;br /&gt;The following is my version of a walkthrough that discusses how to properly add a toolbar to the Normal.mxt template.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Start ArcMap with a new/blank document&lt;/li&gt;&lt;li&gt;Save this document anywhere - location is not important.  It can be deleted later.  Again, I'm assuming that a saved document allows the .mxt file to be saved, thus edits can be applied, though this is just a hypothesis.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Open the Customize dialog (from Tools :: Customize, or double click in a gray area beside a docked toolbar)&lt;/li&gt;&lt;/ul&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VJ2U8mMqPfU/Sq6w_dTYbnI/AAAAAAAABP8/rxz_ZXFZZME/s1600-h/CustomToolbars01.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 250px;" src="http://2.bp.blogspot.com/_VJ2U8mMqPfU/Sq6w_dTYbnI/AAAAAAAABP8/rxz_ZXFZZME/s320/CustomToolbars01.gif" alt="" id="BLOGGER_PHOTO_ID_5381433208998489714" border="0" /&gt;&lt;/a&gt;&lt;ul&gt;&lt;li&gt;Choose New to create a new, blank toolbar&lt;/li&gt;&lt;li&gt;Give the new toolbar a name, and be sure to change the "Save in" option to Normal.mxt.&lt;br /&gt;&lt;span style="font-size:85%;"&gt;( Normal.mxt is the default, base template that ArcMap uses to define the which toolbars are included in its operating interface.  When a new/blank document is launched, Normal.mxt is called to define which buttons and toolbars go where.  Over time it is nice to change this around to suit individual needs)&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_VJ2U8mMqPfU/Sq6xlUVRPII/AAAAAAAABQE/IwkcYuJBuAo/s1600-h/CustomToolbars02.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 273px; height: 191px;" src="http://3.bp.blogspot.com/_VJ2U8mMqPfU/Sq6xlUVRPII/AAAAAAAABQE/IwkcYuJBuAo/s320/CustomToolbars02.gif" alt="" id="BLOGGER_PHOTO_ID_5381433859425516674" border="0" /&gt;&lt;/a&gt;&lt;ul&gt;&lt;li&gt;The new, blank toolbar is added to the project&lt;/li&gt;&lt;/ul&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_VJ2U8mMqPfU/Sq6zGYuf1zI/AAAAAAAABQM/dEwlaMrGHW4/s1600-h/CustomToolbars03.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 48px; height: 54px;" src="http://1.bp.blogspot.com/_VJ2U8mMqPfU/Sq6zGYuf1zI/AAAAAAAABQM/dEwlaMrGHW4/s320/CustomToolbars03.gif" alt="" id="BLOGGER_PHOTO_ID_5381435527052384050" border="0" /&gt;&lt;/a&gt;&lt;ul&gt;&lt;li&gt;Add some buttons/tools/commands to the toolbar by navigating to the Commands tab from the Customize dialog.  There are many provided by ESRI, sorted into Categories (the pane on the left) and the actual commands (buttons) are located in the Commands list to the right.  Select the one you want and drag it carefully to the new toolbar, or to any other toolbar.  Again, be sure to "Save in" Normal.mxt&lt;/li&gt;&lt;/ul&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_VJ2U8mMqPfU/Sq604L4HMLI/AAAAAAAABQU/i9Onpiy9rx4/s1600-h/CustomToolbars04.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 299px;" src="http://4.bp.blogspot.com/_VJ2U8mMqPfU/Sq604L4HMLI/AAAAAAAABQU/i9Onpiy9rx4/s320/CustomToolbars04.gif" alt="" id="BLOGGER_PHOTO_ID_5381437482108137650" border="0" /&gt;&lt;/a&gt;&lt;ul&gt;&lt;li&gt;To add customized buttons from which you can run your own Visual Basic code, scroll all the way to the bottom of the Categories list and select [UIControls].&lt;/li&gt;&lt;li&gt;Press the New UIControl... button&lt;/li&gt;&lt;li&gt;Choose from one of the control types - UIButtonControl will make a button that will run some code that will be programmed later - and press Create&lt;/li&gt;&lt;li&gt;Rename the control to something that will be recognized easily, and drag the control to the new toolbar&lt;/li&gt;&lt;li&gt;Change the button's icon/picture by right clicking on the button (with the Customize dialog still launched) and choose an icon from the "Change Button Image" sub-menu.A custom  .bmp file can be used as the image by choosing Browse from this menu&lt;/li&gt;&lt;/ul&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_VJ2U8mMqPfU/Sq63IZZZffI/AAAAAAAABQc/WiUMevAGKW4/s1600-h/CustomToolbars05.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 313px;" src="http://3.bp.blogspot.com/_VJ2U8mMqPfU/Sq63IZZZffI/AAAAAAAABQc/WiUMevAGKW4/s320/CustomToolbars05.gif" alt="" id="BLOGGER_PHOTO_ID_5381439959638572530" border="0" /&gt;&lt;/a&gt;&lt;ul&gt;&lt;li&gt;To begin editing code, right click on a button (command) and choose View Source to launch the Visual Basic Editor (shortcut key Alt+F11)&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Now close the Customize dialog box and save the otherwise blank ArcMap document. From here the new toolbar and its tools should be saved in Normal.mxt.&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Just for the sake of argument, drag the toolbar to the top of the ArcMap window to dock it. &lt;span style="font-size:85%;"&gt;(This really shouldn't be necessary though.)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Save the document again&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Open the Customize dialog again and change the "Save in" option from Normal.mxt to the alternative choice which will be the name of the .mxd.  If the toolbar is still present, the Normal.mxt template has been successfully altered with the addition of the new toolbar.  Change the "Save in" option back to Normal.mxt and continue alterations if necessary.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;See also:&lt;br /&gt;&lt;a href="http://www.esri.com/news/arcuser/0205/files/toolbar.pdf"&gt;ESRI Article: Save Custom Toolbar Configuration&lt;/a&gt;&lt;br /&gt;&lt;a href="http://justin.berke.googlepages.com/Normal.mxt"&gt;My Normal.mxt&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4228793464107368822-1671983900947661342?l=justinberke.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://justinberke.blogspot.com/feeds/1671983900947661342/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4228793464107368822&amp;postID=1671983900947661342' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/1671983900947661342'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/1671983900947661342'/><link rel='alternate' type='text/html' href='http://justinberke.blogspot.com/2009/10/intro-to-customizing-arcgis-desktop.html' title='Intro to Customizing ArcGIS Desktop, Toolbars, and Normal.mxt'/><author><name>Justin</name><uri>http://www.blogger.com/profile/13405139779467188945</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VJ2U8mMqPfU/SoSptGXK8iI/AAAAAAAABOQ/qRpz6nqiK7k/S220/pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_VJ2U8mMqPfU/Sq6w_dTYbnI/AAAAAAAABP8/rxz_ZXFZZME/s72-c/CustomToolbars01.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4228793464107368822.post-157498137245312200</id><published>2009-10-14T01:06:00.012-04:00</published><updated>2011-05-19T16:04:17.971-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='statistics'/><category scheme='http://www.blogger.com/atom/ns#' term='lol'/><category scheme='http://www.blogger.com/atom/ns#' term='visualization'/><category scheme='http://www.blogger.com/atom/ns#' term='research'/><category scheme='http://www.blogger.com/atom/ns#' term='data manipulation'/><category scheme='http://www.blogger.com/atom/ns#' term='computer bricka-brack'/><category scheme='http://www.blogger.com/atom/ns#' term='web-tech'/><category scheme='http://www.blogger.com/atom/ns#' term='modeling'/><category scheme='http://www.blogger.com/atom/ns#' term='coding'/><title type='text'>Languages of Modeling</title><content type='html'>I recently became interested in modeling everyday occurrences.  This is mostly a joke, though it's definitely good practice to keep statistical analysis techniques fresh in my head.  Additionally, it's helping me brush up on some much needed math topics that are in dire need of refreshment.&lt;br /&gt;&lt;br /&gt;To effectively convey this information (nerdy jokes), I realize that I draw upon four sorts of languages: English, stats, math, and the newest &lt;a href="http://www.latex-project.org/"&gt;L&lt;sup&gt;A&lt;/sup&gt;T&lt;sub&gt;E&lt;/sub&gt;X&lt;/a&gt;.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;English is used to concisely describe a situation: "Shaquille O'Neal is the greatest living actor"&lt;/li&gt;&lt;li&gt;Statistical modeling is used to describe and quantify predictions, interactions, and tendencies: "My love of killing hookers by playing Grand Theft Auto is directly proportional to your love of killing literature by obsessing over Twilight - as modeled in relation to characters who look like they're addicted to meth."  English is used as the core language, however the subset dialect of statistics is well defined.  Certain graphs and diagrams are often added to convey an idea&lt;/li&gt;&lt;li&gt;Mathematics are used to explicitly define what is happening in a specific, overly technical, dry-witted manor:&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;center&gt;&lt;a href="http://1.bp.blogspot.com/_VJ2U8mMqPfU/SwGgCO8Z0jI/AAAAAAAABZo/h1TkcmMU5A8/s1600/language_of_modeling.gif" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5404776988052935218" src="http://1.bp.blogspot.com/_VJ2U8mMqPfU/SwGgCO8Z0jI/AAAAAAAABZo/h1TkcmMU5A8/s400/language_of_modeling.gif" style="cursor: pointer; display: block; height: 51px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;/center&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;and finally, the newest of which, L&lt;sup&gt;A&lt;/sup&gt;T&lt;sub&gt;E&lt;/sub&gt;X,  is used to create the pretty looking mathematical and statistical functions and algorithms: (see above)&lt;/li&gt;&lt;/ul&gt;Throw in some HTML as the medium of dissemination, and you have one nerdy kid that needs to record more music and make some &lt;a href="http://textsfromlastnight.com/"&gt;bad decisions&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;LaTeX is a markup language used in typesetting information into standard, pre-existing document templates.  Whereas writing a paper usually consists of typing text into MS Word and setting the page margins, paragraph spacing, indentations, etc., the same plain text of the paper can be pasted into the LaTeX environment with bits of markup wrapping around it.  All standard formatting is automatically applied so numerious authors can easily produce articles with the same formatting.&lt;br /&gt;&lt;br /&gt;Additionally, high quality formulas are easier to create.  The methodical and intuitive prasing can get cluttered, but pretty much everything is grouped by braces (  { } ).&lt;br /&gt;&lt;br /&gt;As an example, here is the code used to create the formula above:&lt;br /&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: courier new;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: courier new;"&gt;Nickelback = {\sum{StabWounds}^{MyEars} \over{time}} - Enjoyment(life)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;While &lt;a href="http://en.wikipedia.org/wiki/LaTeX"&gt;reading just a little bit about it&lt;/a&gt;, I immediately began to recognize this as the formatting used in many of the journal articles that I read.  Of course I learn about this on my way OUT of grad school!  Instead I'll use it for nerdy internet jokes.  Wonderful.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4228793464107368822-157498137245312200?l=justinberke.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://justinberke.blogspot.com/feeds/157498137245312200/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4228793464107368822&amp;postID=157498137245312200' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/157498137245312200'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/157498137245312200'/><link rel='alternate' type='text/html' href='http://justinberke.blogspot.com/2009/10/languages-of-modeling.html' title='Languages of Modeling'/><author><name>Justin</name><uri>http://www.blogger.com/profile/13405139779467188945</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VJ2U8mMqPfU/SoSptGXK8iI/AAAAAAAABOQ/qRpz6nqiK7k/S220/pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_VJ2U8mMqPfU/SwGgCO8Z0jI/AAAAAAAABZo/h1TkcmMU5A8/s72-c/language_of_modeling.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4228793464107368822.post-30547180288279062</id><published>2009-10-11T03:16:00.006-04:00</published><updated>2009-11-16T13:57:08.048-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='statistics'/><category scheme='http://www.blogger.com/atom/ns#' term='web site idea'/><category scheme='http://www.blogger.com/atom/ns#' term='app'/><category scheme='http://www.blogger.com/atom/ns#' term='facebook'/><category scheme='http://www.blogger.com/atom/ns#' term='data manipulation'/><category scheme='http://www.blogger.com/atom/ns#' term='computer bricka-brack'/><category scheme='http://www.blogger.com/atom/ns#' term='web-tech'/><title type='text'>App Idea: Facebook History</title><content type='html'>I've tried on a few different occasions to see how I have previously wasted my time in the past.  I scroll to the bottom of my Facebook wall, click "Older Posts" and repeat.  This happens up to a half dozen times before I loose interest (I've read studies that internet users' attention span is as short as seven seconds [I would have posted links, but I don't feel like reading these articles]).  This technique usually yields no more than a day or two of my Facebook history.  Who cares?&lt;br /&gt;&lt;br /&gt;I'd like a more efficient way to (possibly) quantify and (more importantly [not importantly]) reflect on just how much of my youth I have wasted.  Assume each wall post can equal 10-20 seconds, each posted picture/link amounts to a bit more time, etc.  Also, it'll just serve as a simple tool to navigate through a given time frame to see what you/your friends were up to &lt;a href="http://encyclopediadramatica.com/At_least_100"&gt;at least 100 years ago&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4228793464107368822-30547180288279062?l=justinberke.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://justinberke.blogspot.com/feeds/30547180288279062/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4228793464107368822&amp;postID=30547180288279062' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/30547180288279062'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/30547180288279062'/><link rel='alternate' type='text/html' href='http://justinberke.blogspot.com/2009/10/app-idea-facebook-history.html' title='App Idea: Facebook History'/><author><name>Justin</name><uri>http://www.blogger.com/profile/13405139779467188945</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VJ2U8mMqPfU/SoSptGXK8iI/AAAAAAAABOQ/qRpz6nqiK7k/S220/pic.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4228793464107368822.post-5591287218159745947</id><published>2009-10-01T15:04:00.021-04:00</published><updated>2011-05-24T11:08:28.349-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GIS'/><category scheme='http://www.blogger.com/atom/ns#' term='data manipulation'/><title type='text'>Calculate Lat/Long Values in ArcMap</title><content type='html'>&lt;span style="font-size: 100%;"&gt;&lt;span style="font-family: georgia;"&gt;Yet again, I had a difficult time finding sufficient information on calculating latitude and longitude values for a point shapefile. I've only encountered one or two situations in the past few years where I worked with a coverage that was missing these data, though it's still a basic and important technique that should be addressed a bit better.&lt;br /&gt;&lt;br /&gt;It turns out that (at least) ArcMap 9.2 provides a pretty simple method to quickly calculate a number of &lt;a href="http://justinberke.blogspot.com/2009/11/angular-unit-conversion-dd-dms-radians.html"&gt;geographic coordinates&lt;/a&gt;.  A few things are important to consider though:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 100%;"&gt;&lt;span style="font-family: georgia;"&gt;&lt;span style="font-size: 130%;"&gt;&lt;span style="font-weight: bold;"&gt;Converting Polygon to Point data:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Unless you're interested in the locations of polygon boundaries (shorelines, property boundaries, etc. - in which case you will convert the polygon boundaries to nodes), you will want to create a point coverage to represent &lt;a href="http://support.esri.com/index.cfm?fa=knowledgebase.gisDictionary.search&amp;amp;search=true&amp;amp;searchTerm=centroid"&gt;&lt;span style="font-style: italic;"&gt;centroids&lt;/span&gt;&lt;/a&gt;.  Be sure to choose whether that center location will be the true center, or be preserved within the bounds of the polygon:&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Show ArcToolbox in ArcMap (or ArcCatalog)&lt;/li&gt;&lt;li&gt;Open the Feature to Point tool&lt;br /&gt;(Under Data Management Tools :: Features :: Feature to Point)&lt;/li&gt;&lt;li&gt;Press Show Help to read more about the tool&lt;/li&gt;&lt;li&gt;Select a polygon or line feature to use as in input featre&lt;/li&gt;&lt;li&gt;Set an output location and name for the resulting feature class&lt;/li&gt;&lt;li&gt;Check the "Inside" check box to calculate a centroid within the boundary of a given feature (i.e. a "bent" polygon similar to the shape of Florida can have a centroid in the Gulf of Mexico if "Inside" is not selected)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size: 100%;"&gt;&lt;span style="font-family: georgia;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://2.bp.blogspot.com/_VJ2U8mMqPfU/SsUOoTj1tdI/AAAAAAAABSw/j_notTKFVsU/s1600-h/calc_lat-longs01.gif" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5387728614826816978" src="http://2.bp.blogspot.com/_VJ2U8mMqPfU/SsUOoTj1tdI/AAAAAAAABSw/j_notTKFVsU/s400/calc_lat-longs01.gif" style="cursor: pointer; display: block; height: 265px; margin: 0px auto 10px; text-align: center; width: 396px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_VJ2U8mMqPfU/SsUPiNGM2kI/AAAAAAAABS4/nxTfXA-X18o/s1600-h/calc_lat-longs02.gif" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5387729609524304450" src="http://4.bp.blogspot.com/_VJ2U8mMqPfU/SsUPiNGM2kI/AAAAAAAABS4/nxTfXA-X18o/s400/calc_lat-longs02.gif" style="cursor: pointer; display: block; height: 389px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size: 100%;"&gt;&lt;span style="font-family: georgia;"&gt;&lt;br /&gt;&lt;br /&gt;There is insufficient information on the internets about this process works.  There is a simple and automated calculator built into atribute table field calculations.  To make this work properly in this situation (calculating geographic latitude/longitude coordinates) &lt;u style="font-weight: bold;"&gt;the coordinate system must be set to a geographic coordinate system&lt;/u&gt;, rather than a projected coordinate system.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 100%;"&gt;&lt;span style="font-family: georgia;"&gt;&lt;span style="font-size: 130%;"&gt;&lt;span style="font-weight: bold;"&gt;Calculating Lat/Long Coordinates:&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Add a point coverage to a project&lt;/li&gt;&lt;li&gt;Change the data frame to a geographic coordinate system&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Right click on the data frame heading in the table of contents pane and choose Properties&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Navigate to the Coordinate System tab&lt;/li&gt;&lt;li&gt;Expand the Predefined branch&lt;/li&gt;&lt;li&gt;Expand the Geographic Coordinate Systems branch&lt;/li&gt;&lt;li&gt;Expand the North America branch&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Choose North American 1983 HARN and click OK&lt;/li&gt;&lt;li&gt;Choose Yes if prompted with a coordinate system warning&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Open the layer's Attribute Table and add the following fields /types &lt;span style="font-size: 85%;"&gt;(&lt;/span&gt;LONG&lt;span style="font-size: 85%;"&gt;_DD is indeed string 3, not a typo)&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;table align="center" border="0" cellspacing="4"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align="center"&gt;&lt;span style="font-weight: bold;"&gt;Field Name &lt;/span&gt;&lt;br /&gt;LATITUDE&lt;br /&gt;LONGITUDE&lt;br /&gt;LAT_DD&lt;br /&gt;LAT_MM&lt;br /&gt;LAT_SS&lt;br /&gt;LONG_DD&lt;br /&gt;LONG_MM&lt;br /&gt;LONG_SS&lt;/td&gt;&lt;td align="center"&gt;&lt;span style="font-weight: bold;"&gt;Type/Length&lt;/span&gt;&lt;br /&gt;Text (string), 20&lt;br /&gt;Text, 20&lt;br /&gt;Text, 2&lt;br /&gt;Text, 2&lt;br /&gt;Text, 9&lt;br /&gt;Text, 3&lt;br /&gt;Text, 2&lt;br /&gt;Text, 9&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;ul&gt;&lt;li&gt;Right click the LATITUDE field and select Calculate Geometry&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Set the Property to "Select Y Coordinate of Point"&lt;/li&gt;&lt;li&gt;Select "Use coordinate system of the data frame" to use the geographic coordinate system.  After this, the Units will change from various length units of measure (meters, feet, etc.) to a number of DMS choices&lt;/li&gt;&lt;li&gt;Select "Packed DMS Format (+/- DDD.MMSSssssss")" and hit OK&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Repeat this for LONGITUDE with "Select X Coordinate of Point"&lt;/li&gt;&lt;li&gt;Use the Field Calculator to populate the remaining fields using the following formulas&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;LAT_DD&lt;/b&gt;: left([LATITUDE], 2)&lt;/li&gt;&lt;li&gt;&lt;b&gt;LAT_MM&lt;/b&gt;: mid([LATITUDE], 4, 2) &lt;/li&gt;&lt;li&gt;&lt;b&gt;LAT_SS&lt;/b&gt;: right([LATITUDE], 8)/1000000 &lt;/li&gt;&lt;li&gt;&lt;b&gt;LONG_DD&lt;/b&gt;: left([LONGITUDE], 3)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;LONG_MM&lt;/b&gt;: mid([LONGITUDE], 5, 2)&lt;/li&gt;&lt;li&gt;&lt;b&gt;LONG_SS&lt;/b&gt;: right([LONGITUDE], 8)/1000000&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;a href="http://1.bp.blogspot.com/_VJ2U8mMqPfU/SsUSvJSJASI/AAAAAAAABTA/fM9c2fmLWxA/s1600-h/calc_lat-longs03.gif" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5387733130373824802" src="http://1.bp.blogspot.com/_VJ2U8mMqPfU/SsUSvJSJASI/AAAAAAAABTA/fM9c2fmLWxA/s400/calc_lat-longs03.gif" style="cursor: pointer; display: block; height: 214px; margin: 0px auto 10px; text-align: center; width: 400px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Finally, be sure to Calculate Geometry again on the LATITUDE and LONGITUDE fields (Using the coordinate system of the data frame) but &lt;u style="background-color: yellow;"&gt;set the units to Decimal Degrees&lt;/u&gt;.&amp;nbsp; Until this is finished, the values look like decimal degrees, but if these coordinates are projected, they will be incorrect - perhaps by a long way.&amp;nbsp; A good trick is to see if any values after the decimal are greater than x.599999.&amp;nbsp; If there are any values between x.6 and x.9, those are indeed decimal degrees.&lt;/li&gt;&lt;/ul&gt;There are a few other formats that may be more appropriate for individual projects.  Some custom utilities will require lat/long processing fields to match, so be careful with the LAT_DD/LONG_DD fields; thus DMS fields may need to be converted to another data type.&amp;nbsp; Further, field types of Double and Short Integer may be more appropriate for your database.&lt;br /&gt;&lt;span style="font-size: 100%;"&gt;&lt;span style="font-family: georgia;"&gt;&lt;br /&gt;&lt;span style="font-size: 130%;"&gt;&lt;span style="font-weight: bold;"&gt;See also:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://justinberke.blogspot.com/2009/11/angular-unit-conversion-dd-dms-radians.html"&gt;Angular Unit Conversion (convert between DD, DMS, and radians)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://support.esri.com/index.cfm?fa=knowledgebase.techArticles.articleShow&amp;amp;d=19643"&gt;How To: Populate x, y, or z point data fields of an attribute table&lt;/a&gt;  &lt;span style="font-size: 100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://support.esri.com/index.cfm?fa=knowledgebase.techarticles.articleShow&amp;amp;d=31863"&gt;How To: Calculate Latitude and Longitude values using the Field Calculator&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4228793464107368822-5591287218159745947?l=justinberke.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://justinberke.blogspot.com/feeds/5591287218159745947/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4228793464107368822&amp;postID=5591287218159745947' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/5591287218159745947'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/5591287218159745947'/><link rel='alternate' type='text/html' href='http://justinberke.blogspot.com/2009/10/calculate-latlong-values-in-arcmap.html' title='Calculate Lat/Long Values in ArcMap'/><author><name>Justin</name><uri>http://www.blogger.com/profile/13405139779467188945</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VJ2U8mMqPfU/SoSptGXK8iI/AAAAAAAABOQ/qRpz6nqiK7k/S220/pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_VJ2U8mMqPfU/SsUOoTj1tdI/AAAAAAAABSw/j_notTKFVsU/s72-c/calc_lat-longs01.gif' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4228793464107368822.post-6614119873401818471</id><published>2009-09-28T16:30:00.018-04:00</published><updated>2009-09-29T00:28:48.253-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='app'/><category scheme='http://www.blogger.com/atom/ns#' term='VB'/><category scheme='http://www.blogger.com/atom/ns#' term='coding'/><title type='text'>Working With Text Files in Visual Basic</title><content type='html'>Visual Basic can be an effective medium used to track calculations in a session of work, however the variables, objects, strings of text, numbers, etc. are volatile; anything created or calculated will be lost when the program is closed.  A few of the apps I developed make use of saving certain pieces of information to a small text file before the program is closed, and retrieving the information and putting those pieces back into the app when the program is loaded later.&lt;br /&gt;&lt;br /&gt;These text file handling sessions are basically simple enough, but can get a little more complicated when specific logic is required - I'll get into that later.&lt;br /&gt;&lt;br /&gt;First off, open Notepad or another light text editor and save a new file.  I like to change the extension from .txt to something that is unique to my project - for instance .jus, or .anp, etc.  The suffix can be anything; I like to change this from .txt so it is less likely that the file will be opened or its contents changed.  Restructuring the contents may cause errors when it is loaded by the application.  The .txt suffix can also be used as an alternative, however.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_VJ2U8mMqPfU/SsEg5oW6edI/AAAAAAAABRk/RxQP_tRFUgU/s1600-h/TxtFiles1-01.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 252px; height: 122px;" src="http://4.bp.blogspot.com/_VJ2U8mMqPfU/SsEg5oW6edI/AAAAAAAABRk/RxQP_tRFUgU/s400/TxtFiles1-01.gif" alt="" id="BLOGGER_PHOTO_ID_5386622803769981394" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:78%;"&gt;ArcNotepad.anp is the newly created  text file&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;To save a text file with a unique suffix, change the "Save&lt;/span&gt; as type" to "All files" and it may be necessary to put quotes around the file name from the Save As dialog box:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VJ2U8mMqPfU/SsEjt-r3FPI/AAAAAAAABRs/K8-ugbblT7U/s1600-h/TxtFiles1-02.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 258px;" src="http://2.bp.blogspot.com/_VJ2U8mMqPfU/SsEjt-r3FPI/AAAAAAAABRs/K8-ugbblT7U/s320/TxtFiles1-02.gif" alt="" id="BLOGGER_PHOTO_ID_5386625902139872498" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Save text to a file:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;Private Sub &lt;/span&gt;Save_Click()&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;Open &lt;/span&gt;"C:\ArcNotepad.anp" &lt;/code&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;For Output As&lt;/span&gt;&lt;/code&gt;&lt;code&gt; #1&lt;br /&gt;&lt;/code&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;Print &lt;/span&gt;&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;#1, "1st line of the document"&lt;br /&gt;&lt;/code&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;span style="color: rgb(255, 255, 255);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;Print &lt;/span&gt;&lt;/code&gt;&lt;code&gt;#1, "2nd line" &lt;span style="color: rgb(0, 128, 0);"&gt;'Line 2, etc.&lt;/span&gt;&lt;br /&gt;&lt;/code&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;Close &lt;/span&gt;&lt;/code&gt;&lt;code&gt;#1&lt;br /&gt;&lt;/code&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;br /&gt;End Sub&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Retrieve text from a file:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;Private Sub &lt;/span&gt;Load_Click()&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;Dim &lt;/span&gt;strLine1 &lt;/code&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;As Integer&lt;span style="font-family:Georgia,serif;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;Dim &lt;/span&gt;strLine2 &lt;/code&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;As Integer&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;Open &lt;/span&gt;"C:\ArcNotepad.anp" &lt;/code&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;For Input As&lt;/span&gt;&lt;/code&gt;&lt;code&gt; #2&lt;br /&gt;&lt;/code&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;span style="color: rgb(255, 255, 204);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;Line Input &lt;/span&gt;&lt;/code&gt;&lt;code&gt;#2, strLine1&lt;br /&gt;&lt;/code&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;span style="color: rgb(255, 255, 204);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;Line Input&lt;/span&gt;&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt; #2, strLine2 &lt;span style="color: rgb(0, 153, 0);"&gt;'etc.&lt;/span&gt;&lt;br /&gt;&lt;/code&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;Close &lt;/span&gt;&lt;/code&gt;&lt;code&gt;#2&lt;br /&gt;&lt;/code&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;br /&gt;End Sub&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;That's it for the basics, but let's insert some logic into this. The previous two examples will work if your formatting will be standard - that is, if the text file holds a set number of values/variables that will be updated over and over again, but the number of values will not change.  An alternative situation is when lines are added or removed from the text document.   The application will not know how many lines are included in the text file, and this is poses a problem.  This dynamic text file requires some additional coding to be handled properly.  The next time the document is accessed, there will be either:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;lines that are overlooked (more lines in the text file exist than the previous code looks to retrieve), or&lt;br /&gt;&lt;/li&gt;&lt;li&gt;the program will return a &lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;"Run-time error '62': Input past end of file"&lt;/span&gt;&lt;/span&gt; error (there are too few lines available for the program to retrieve).&lt;/li&gt;&lt;/ul&gt;As an example, consider that the two lines "Another line" and "Even more" are added to the text file and saved, for a total of four lines of text.  The application will need to read through the file and count how many lines there are.  Next, a dynamic array will be created and populated based off of the primary count.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Private Sub &lt;/span&gt;Load_Click()&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Dim &lt;span style="color: rgb(0, 0, 0);"&gt;i &lt;/span&gt;As Integer&lt;/span&gt;&lt;/span&gt; &lt;span style="color: rgb(51, 51, 255);"&gt; &lt;br /&gt;Dim &lt;span style="color: rgb(0, 0, 0);"&gt;blank &lt;/span&gt;As String&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;'Count the number of lines in ArcNotepad.anp&lt;/span&gt;&lt;br /&gt;Open &lt;/span&gt;"C:\ArcNotepad.anp" &lt;span style="color: rgb(51, 51, 255);"&gt;For Input As &lt;/span&gt;#2&lt;br /&gt; &lt;/code&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;span style="color: rgb(255, 255, 204);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;code&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Do While Not &lt;/span&gt;EOF(2)&lt;br /&gt;     &lt;/code&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;span style="color: rgb(255, 255, 204);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;span style="color: rgb(255, 255, 204);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;code&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Line Input &lt;/span&gt;#2, blank&lt;br /&gt;&lt;/code&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;span style="color: rgb(255, 255, 204);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;span style="color: rgb(255, 255, 204);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;code&gt;i = i + 1&lt;br /&gt; &lt;/code&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;span style="color: rgb(255, 255, 204);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;code&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Loop&lt;/span&gt; &lt;span style="color: rgb(51, 51, 255);"&gt;    Close &lt;/span&gt;#2&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;'Break: Show number of lines in ArcNotepad.anp&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;MsgBox &lt;/span&gt;"Lines: " &amp;amp; i&lt;br /&gt;&lt;/code&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_VJ2U8mMqPfU/SsExR42ODdI/AAAAAAAABR0/Tv8ewAVngGY/s1600-h/TxtFiles1-03.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 104px; height: 107px;" src="http://1.bp.blogspot.com/_VJ2U8mMqPfU/SsExR42ODdI/AAAAAAAABR0/Tv8ewAVngGY/s400/TxtFiles1-03.gif" alt="" id="BLOGGER_PHOTO_ID_5386640812699160018" border="0" /&gt;&lt;/a&gt;&lt;code&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Dim &lt;span style="color: rgb(0, 0, 0);"&gt;ii &lt;/span&gt;As Integer&lt;/span&gt; &lt;span style="color: rgb(51, 51, 255);"&gt; &lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;'Create a dynamic array, of size i&lt;/span&gt;&lt;br /&gt;Dim &lt;span style="color: rgb(0, 0, 0);"&gt;strLine() &lt;/span&gt;As String&lt;/span&gt; &lt;span style="color: rgb(51, 51, 255);"&gt; &lt;br /&gt;ReDim&lt;/span&gt; strLine(i)&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;'Populate the array with lines from ArcNotepad.anp&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Open &lt;/span&gt;"C:\ArcNotepad.anp" &lt;span style="color: rgb(51, 51, 255);"&gt;For Input As &lt;/span&gt;#1&lt;br /&gt;&lt;/code&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;span style="color: rgb(255, 255, 204);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;code&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Do While Not &lt;/span&gt;EOF(1)&lt;br /&gt;&lt;/code&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;span style="color: rgb(255, 255, 204);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;code&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Line Input &lt;/span&gt;#1, strLine(ii)&lt;br /&gt;&lt;/code&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;span style="color: rgb(255, 255, 204);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;code&gt;ii = ii + 1&lt;br /&gt;&lt;/code&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;span style="color: rgb(255, 255, 204);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;code&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Loop&lt;/span&gt; &lt;span style="color: rgb(51, 51, 255);"&gt;    Close &lt;/span&gt;#1&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;'Report the array via message box&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Dim &lt;/span&gt;iii &lt;span style="color: rgb(51, 51, 255);"&gt;As Integer&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Dim &lt;/span&gt;strMessage &lt;span style="color: rgb(51, 51, 255);"&gt;As String&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;For &lt;/span&gt;iii = 0 &lt;span style="color: rgb(51, 51, 255);"&gt;To &lt;/span&gt;i - 1&lt;br /&gt;&lt;/code&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;span style="color: rgb(255, 255, 204);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;code&gt;strMessage = strMessage &amp;amp; _&lt;br /&gt;&lt;/code&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;&lt;span style="color: rgb(255, 255, 204);"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;code&gt;"Line " &amp;amp; iii + 1 &amp;amp; ": " &amp;amp; strLine(iii) &amp;amp; vbCrLf&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Next &lt;/span&gt;iii&lt;br /&gt;&lt;br /&gt;MsgBox strMessage&lt;br /&gt;&lt;/code&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VJ2U8mMqPfU/SsExSbwhebI/AAAAAAAABR8/oL2NAf7jQWk/s1600-h/TxtFiles1-04.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 179px; height: 146px;" src="http://2.bp.blogspot.com/_VJ2U8mMqPfU/SsExSbwhebI/AAAAAAAABR8/oL2NAf7jQWk/s400/TxtFiles1-04.gif" alt="" id="BLOGGER_PHOTO_ID_5386640822070507954" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4228793464107368822-6614119873401818471?l=justinberke.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://justinberke.blogspot.com/feeds/6614119873401818471/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4228793464107368822&amp;postID=6614119873401818471' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/6614119873401818471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/6614119873401818471'/><link rel='alternate' type='text/html' href='http://justinberke.blogspot.com/2009/09/working-with-text-files-in-visual-basic.html' title='Working With Text Files in Visual Basic'/><author><name>Justin</name><uri>http://www.blogger.com/profile/13405139779467188945</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VJ2U8mMqPfU/SoSptGXK8iI/AAAAAAAABOQ/qRpz6nqiK7k/S220/pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_VJ2U8mMqPfU/SsEg5oW6edI/AAAAAAAABRk/RxQP_tRFUgU/s72-c/TxtFiles1-01.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4228793464107368822.post-8997297604726471056</id><published>2009-09-17T14:18:00.016-04:00</published><updated>2009-09-24T17:22:32.176-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GIS'/><category scheme='http://www.blogger.com/atom/ns#' term='DIY'/><category scheme='http://www.blogger.com/atom/ns#' term='VB'/><category scheme='http://www.blogger.com/atom/ns#' term='customization'/><category scheme='http://www.blogger.com/atom/ns#' term='ArcObjects'/><category scheme='http://www.blogger.com/atom/ns#' term='coding'/><title type='text'>VB / ArcObjects Cheat Sheet</title><content type='html'>&lt;center&gt;&lt;img src="http://lh4.ggpht.com/_VJ2U8mMqPfU/SrKFDxjmrHI/AAAAAAAABQs/R1oI7Q7Q2xs/vbCheatSheet02-UML%20Diagrams.GIF" border="0" /&gt;&lt;/center&gt;&lt;table border="0" cellpadding="0" cellspacing="3" width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="bottom" width="131"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_VJ2U8mMqPfU/SrJ-Z7PRpRI/AAAAAAAABQk/-SvTij1P5qw/s1600-h/vbCheatSheet01.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 131px; height: 326px;" src="http://1.bp.blogspot.com/_VJ2U8mMqPfU/SrJ-Z7PRpRI/AAAAAAAABQk/-SvTij1P5qw/s400/vbCheatSheet01.gif" alt="" id="BLOGGER_PHOTO_ID_5382503488524756242" border="0" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td valign="bottom"&gt;I've been discussing code a bit, and for the non-coder it will make little sense. ArcGIS, along with many other Microsoft-based software packages can be easily customized, and a lot of really cool (nerd) tools and applications can be created with only a little bit of training.&lt;br /&gt;&lt;br /&gt;There are many free resources on the internets that explain in great detail how to begin coding.  I started learning Visual Basic last summer and have already released an ArcGIS toolset used by the &lt;a href="http://www.dep.state.fl.us/water/monitoring/"&gt;Florida Department of Environmental Protection&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;During that time, I saved a few bits of information that I found important to remember, so I threw together this cluttered&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div style="text-align: center;"&gt;&lt;div style="text-align: left;"&gt;PDF file as an ArcObjects Cheat Sheet (VB Reference Sheet):&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(51, 102, 255);font-size:130%;" &gt;- &lt;/span&gt;&lt;span style="color: rgb(51, 102, 255);font-size:130%;" &gt;&lt;a style="font-weight: bold;" href="http://justin.berke.googlepages.com/VB-ArcObjectsCheatSheet.pdf"&gt;Download the VB / ArcObjects Cheat Sheet&lt;/a&gt;&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(51, 102, 255);font-size:130%;" &gt; -&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Further Resources:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Google: &lt;a href="http://www.google.com/search?q=vb+tutorial&amp;amp;ie=utf-8&amp;amp;oe=utf-8&amp;amp;aq=t&amp;amp;rls=org.mozilla:en-US:official&amp;amp;client=firefox-a"&gt;VB Tutorial&lt;/a&gt;&lt;/li&gt;&lt;li&gt;ESRI offers a &lt;a href="http://training.esri.com/gateway/index.cfm?fa=search.results&amp;amp;searchterm=visual+basic&amp;amp;softwaretype=All+Software&amp;amp;trainingformat=1%2C2&amp;amp;search=Search"&gt;number of courses&lt;/a&gt; that introduce Visual Basic in the ArcMap environment.  The full course is $145, but the first module is free - I would suggest starting here to get a quick overview of what it is about.  Many colleges and universities offer these web courses for free as part of the licensing agreemets.  ESRI even offers free trial versions of ArcGIS if you buy the full course&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.dreamincode.net/"&gt;DreamInCode.net&lt;/a&gt; has their own &lt;a href="http://downloads.dreamincode.net/ref_sheets/vb_reference_sheet.pdf"&gt;VB6 Reference sheet&lt;/a&gt; that I have posted next to my monitors&lt;/li&gt;&lt;li&gt;Download the &lt;a href="http://edndoc.esri.com/arcobjects/8.3/Diagrams/ArcMap%20Object%20Model.pdf"&gt;ArcMap Object Model&lt;/a&gt; diagram&lt;/li&gt;&lt;li&gt;View the Getting Started with &lt;a href="http://training.esri.com/acb2000/showdetl.cfm?DID=6&amp;amp;Product_ID=791"&gt;ArcObjects in ArcGIS Training Seminar&lt;/a&gt; video to help understand what is going on in the ArcMap Object Model; this is available for free through the &lt;a href="http://training.esri.com/gateway/index.cfm"&gt;ESRI Training website&lt;/a&gt; (requires free registration)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Thumb through the &lt;a href="http://resources.esri.com/help/9.3/arcgisdesktop/com/vb6_start.htm"&gt;ArcGIS Desktop VB6 Documentation&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4228793464107368822-8997297604726471056?l=justinberke.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://justinberke.blogspot.com/feeds/8997297604726471056/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4228793464107368822&amp;postID=8997297604726471056' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/8997297604726471056'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/8997297604726471056'/><link rel='alternate' type='text/html' href='http://justinberke.blogspot.com/2009/09/vb-arcobjects-cheat-sheet.html' title='VB / ArcObjects Cheat Sheet'/><author><name>Justin</name><uri>http://www.blogger.com/profile/13405139779467188945</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VJ2U8mMqPfU/SoSptGXK8iI/AAAAAAAABOQ/qRpz6nqiK7k/S220/pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_VJ2U8mMqPfU/SrKFDxjmrHI/AAAAAAAABQs/R1oI7Q7Q2xs/s72-c/vbCheatSheet02-UML%20Diagrams.GIF' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4228793464107368822.post-4314425027863458631</id><published>2009-09-03T00:33:00.003-04:00</published><updated>2009-09-03T19:06:03.278-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lol'/><category scheme='http://www.blogger.com/atom/ns#' term='computer bricka-brack'/><title type='text'>Tetris is Aware</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://somecontrast.com/blog/wp-content/uploads/2009/06/25-years-worth-of-tetris.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 288px;" src="http://somecontrast.com/blog/wp-content/uploads/2009/06/25-years-worth-of-tetris.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I am almost certain that Tetris software is not only cognizant, but I swear that it's also sentient.  There are many times when sequences of pieces cannot possibly be part of any random combination&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Every once in a while it'll throw me a bone and send a few good pieces my way when I get out of a particularly difficult situation&lt;/li&gt;&lt;li&gt;It teases me after level 12 by sending groups of I-pieces (&lt;img src="http://upload.wikimedia.org/wikipedia/en/thumb/f/f4/Tetris_I.svg/40px-Tetris_I.svg.png" border="0" /&gt;) - almost to say, "Ha!  Bet you didn't expect these NOW!"&lt;br /&gt;&lt;/li&gt;&lt;li&gt;It knows it's time for bed and starts sending ridiculous sequences of only S and Z pieces (&lt;img src="http://upload.wikimedia.org/wikipedia/en/thumb/7/7b/Tetris_S.svg/30px-Tetris_S.svg.png" border="0" /&gt; &lt;img src="http://upload.wikimedia.org/wikipedia/en/thumb/3/33/Tetris_Z.svg/30px-Tetris_Z.svg.png" border="0" /&gt;) when I've been waiting patiently for an I and there are no good locations for such pieces&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;I am also beginning to suffer from &lt;a href="http://en.wikipedia.org/wiki/Tetris_effect"&gt;the Tetris Effect&lt;/a&gt; - where one begins to see shapes and attempt to solve lines, away from the game.  The first time I had this happen was when I played a lot of competitive &lt;a href="http://i.neoseeker.com/p/Games/Playstation/Classic_&amp;amp;_Puzzle/Puzzle_Games/nexttetris_profilelarge.jpg"&gt;The Next Tetris&lt;/a&gt; with some friends back in high school.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4228793464107368822-4314425027863458631?l=justinberke.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://justinberke.blogspot.com/feeds/4314425027863458631/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4228793464107368822&amp;postID=4314425027863458631' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/4314425027863458631'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/4314425027863458631'/><link rel='alternate' type='text/html' href='http://justinberke.blogspot.com/2009/09/tetris-is-aware.html' title='Tetris is Aware'/><author><name>Justin</name><uri>http://www.blogger.com/profile/13405139779467188945</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VJ2U8mMqPfU/SoSptGXK8iI/AAAAAAAABOQ/qRpz6nqiK7k/S220/pic.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4228793464107368822.post-3281680015393866650</id><published>2009-08-22T23:16:00.003-04:00</published><updated>2011-05-16T09:38:02.770-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='research'/><category scheme='http://www.blogger.com/atom/ns#' term='web-tech'/><title type='text'>Masters Research using Google</title><content type='html'>Why do I not own stock in Google?  The bubble has not burst yet so it seems pretty solid; with GOOG-411, the forthcoming &lt;a href="http://www.google.com/googlevoice/about.html"&gt;Google Voice&lt;/a&gt;, and Google Wave, etc.  Let's go holidays!&lt;br /&gt;&lt;blockquote&gt;&lt;b&gt;Update:&lt;/b&gt; RIP Goog-411, hello Android voice-to-text&lt;/blockquote&gt;&lt;br /&gt;Speaking of celebration, I just finished my masters research.  I was assisting with (and thanks to the shortcomings of ArcMap, I am continuing to finish) research at Florida State University which is continuing to investigate spatial patterns of cloud-to-ground lightning flashes across various landscapes.  My contribution primarily aimed to build a geoprocessing model to assist with the preliminary data preparation for future iterations of similar research.  Some other bricka-brack followed.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://www.google.com/intl/en/images/logos/docs_logo.gif" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" src="https://www.google.com/intl/en/images/logos/docs_logo.gif" style="cursor: pointer; display: block; height: 40px; margin: 0px auto 10px; text-align: center; width: 160px;" /&gt;&lt;/a&gt;I decided to write it using Google Docs because I knew I would be working at home, in my office at DEP, and on campus and versioning is a pain in the ass.  This is the 90's... nobody needs to save separate/new copies to a flash drive or send via e-mail anymore.  This allowed me to edit a standard copy from various locations on demand.  Very clean.  Of course I formatted and submitted the final versions with Word (2003), though this &lt;a href="http://justinberke.blogspot.com/2009/10/office-2007-youre-pushing-my-buttons.html"&gt;MS Dependency is becoming increasingly antiquated&lt;/a&gt; with the assistance of &lt;a href="http://justinberke.blogspot.com/2009/10/languages-of-modeling.html"&gt;LaTeX (a very good formating and publishing medium)&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Although I didn't really need to use this feature, it is easy to set permissions and invite other users to view or edit any text document, spreadsheet, form, or presentation thuswise:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://docs.google.com/Doc?docid=0AWPoR3Z1imR-ZGM4a3FyZjNfMzFjMjNxcW1kcw&amp;amp;hl=en"&gt;Project Proposal&lt;/a&gt;&lt;br /&gt;&lt;a href="http://docs.google.com/Doc?docid=0AWPoR3Z1imR-ZGM4a3FyZjNfMzNmd3JnYnFqNg&amp;amp;hl=en"&gt;Survey of Literature / Background&lt;/a&gt;&lt;br /&gt;&lt;a href="http://docs.google.com/Doc?docid=0AWPoR3Z1imR-ZGM4a3FyZjNfMzVobTV3bTVkdg&amp;amp;hl=en"&gt;Data Management&lt;/a&gt;&lt;br /&gt;&lt;a href="http://docs.google.com/Doc?docid=0AWPoR3Z1imR-ZGM4a3FyZjNfNTlmODdxODk3ag&amp;amp;hl=en"&gt;Visualization &amp;amp; Spatial Investigation&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;I strongly recommend reading the  &lt;a href="http://docs.google.com/Doc?docid=0AWPoR3Z1imR-ZGM4a3FyZjNfMzNmd3JnYnFqNg&amp;amp;hl=en"&gt;Survey of Literature / Background&lt;/a&gt; and ignoring the rest of it.  It "briefly" introduces what a thunderstorm is and how they are created.&lt;br /&gt;&lt;br /&gt;There are around 40 references in total (each document basically composes the final report) - to which I would like to give many thanks to &lt;a href="http://scholar.google.com/"&gt;Google Scholar &lt;/a&gt;and &lt;a href="http://books.google.com/"&gt;Google Books&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Scholar is aided by a proxy connection to FSU's library which has subscriptions to many of the journals that are returned in a search.  Books doesn't have &lt;span style="font-style: italic;"&gt;every &lt;/span&gt;book, nor does it allow users to see &lt;span style="font-style: italic;"&gt;every&lt;/span&gt; page of all available books, however I was able to serach thousands of books for a single word or phrase, and the results are not only higlighted, but each page is presented with separate previews and links to the specific page of the book.&lt;br /&gt;&lt;br /&gt;I can't imagine a world (I'm looking at you, the 20th centrury) that did not have the luxary of these efficient tools.  Walking to the library and reading through hundreds of pages of books and journals absolutely has its benefits (learning vast amounts of supplementary information and providing a more comprehensive overview of the topics of interest), but it's for &lt;span style="font-style: italic;"&gt;suckas&lt;/span&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4228793464107368822-3281680015393866650?l=justinberke.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://justinberke.blogspot.com/feeds/3281680015393866650/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4228793464107368822&amp;postID=3281680015393866650' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/3281680015393866650'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/3281680015393866650'/><link rel='alternate' type='text/html' href='http://justinberke.blogspot.com/2009/08/masters-research-using-google.html' title='Masters Research using Google'/><author><name>Justin</name><uri>http://www.blogger.com/profile/13405139779467188945</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VJ2U8mMqPfU/SoSptGXK8iI/AAAAAAAABOQ/qRpz6nqiK7k/S220/pic.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4228793464107368822.post-4454421167263792577</id><published>2009-08-22T22:00:00.000-04:00</published><updated>2009-08-23T00:36:38.655-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='computer bricka-brack'/><category scheme='http://www.blogger.com/atom/ns#' term='efficiency'/><title type='text'>Tips for Digital Audio Recording &amp; Increasing Computer Speed</title><content type='html'>My computer is a few years old now (got Lappy Tappy for Hanukkah, 2005), and it's filled to the brim with all sorts of (mostly) high end software for spatial modeling &amp;amp;  image processing (ArcMap, Erdas Imagine, IDRISI Andes, R, NetLogo, and some GPS utilities) and music production (Cubase, Fruity Loops, Ableton Live, Reason, Audacity, Guitar Pro, NoteWorthy Composer, and some other mixer and MIDI interface tools).&lt;br /&gt;&lt;br /&gt;Wow, didn't realize how bad it really was.  It takes forever (a good five minutes) to load Mozilla - which encompasses 90% of my workload on here.  It seems silly to bog it down with all that software.  &lt;a href="http://justinberke.blogspot.com/2009/05/diy-cheap-computer.html"&gt;Rock Machine&lt;/a&gt; is significantly more powerful, however I rarely use it because it's in the recording cart (still upcoming post) and it's just easier to use Lappy Tappy for every day communication in front of the tele.&lt;br /&gt;&lt;br /&gt;Anyway, I came across some tips for speeding up a computer.  Enjoy.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://alesis.com/tipsnov08"&gt;&lt;span style="font-weight: bold;font-size:130%;" &gt;Tips and tricks for music and computers&lt;/span&gt;&lt;br /&gt;Optimizing Your Computer Recording System&lt;br /&gt;&lt;span style="font-size:78%;"&gt;http://alesis.com/tipsnov08&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;A few good starting points of my own:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Clear off the desktop.  Put all of those random folders, mp3's, images, shortcuts, etc. in My Documents or somewhere else.  Consolidate into  a single "Desktop Junk" folder.&lt;/li&gt;&lt;li&gt;Empty your recycling bin&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Clear out C:\temp&lt;/li&gt;&lt;li&gt;Clear internet browser history, temporary internet files, cookies, etc.&lt;/li&gt;&lt;li&gt;Remove programs from Start :: Programs :: Startup&lt;/li&gt;&lt;li&gt;Disable startup programs&lt;br /&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Go to Start :: Run&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Type &lt;span style="font-family:courier new;"&gt;msconfig&lt;/span&gt; and hit OK&lt;/li&gt;&lt;li&gt;In the Services tab, check 'Hide All Microsoft Services' and then uncheck anything that looks unnecessary (i.e. Google / iPod updates, etc)&lt;/li&gt;&lt;li&gt;In the Startup tab, uncheck anything that seems unnecessary. Expand the Command field to look for updates, media launchers, peripheral (printers, cameras, etc) management, etc.  Use a search engine to investigate unknown items&lt;/li&gt;&lt;li&gt;Hit OK and restart the computer&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Run a Virus Scan (&lt;a href="http://www.avg.com/home-and-office-security-cmpppc?ctype=ps3925e"&gt;AVG&lt;/a&gt; is free and light)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Run &lt;a href="http://www.lavasoft.com/"&gt;Ad-Aware&lt;/a&gt; free adware removal software&lt;/li&gt;&lt;li&gt;Run &lt;a href="http://www.malwarebytes.org/"&gt;Malwarebytes&lt;/a&gt; free malware removal software&lt;/li&gt;&lt;li&gt;Move Pictures, videos, music, homework, old files, etc. to a portable hard drive (I suggest a hard drive that is powered by USB and does not need to plug into the wall, for instance the &lt;a href="http://www.amazon.com/s/ref=nb_ss_0_12?url=search-alias%3Daps&amp;amp;field-keywords=western+digital+passport&amp;amp;x=0&amp;amp;y=0&amp;amp;sprefix=western+digi"&gt;Western Digital Passport&lt;/a&gt;)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Uninstall uselesss/unused programs or games from Control Panel :: Add or Remove Programs.  Often you can save data or save files and remove the game that isn't played&lt;/li&gt;&lt;li&gt;Clean your registry.  There are a few good utilities out there to do this.  If you don't know what it is then don't bother, so I won't post links.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Finally, defrag your hard drive overnight and restart in the morning&lt;/li&gt;&lt;li&gt;I've never used it, but it would be wise to set a system restore point (Start :: Programs :: Accessories :: System Tools :: Backup)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4228793464107368822-4454421167263792577?l=justinberke.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://justinberke.blogspot.com/feeds/4454421167263792577/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4228793464107368822&amp;postID=4454421167263792577' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/4454421167263792577'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/4454421167263792577'/><link rel='alternate' type='text/html' href='http://justinberke.blogspot.com/2009/05/tips-for-digital-audio-recording.html' title='Tips for Digital Audio Recording &amp; Increasing Computer Speed'/><author><name>Justin</name><uri>http://www.blogger.com/profile/13405139779467188945</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VJ2U8mMqPfU/SoSptGXK8iI/AAAAAAAABOQ/qRpz6nqiK7k/S220/pic.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4228793464107368822.post-2969727281037691144</id><published>2009-08-17T14:47:00.005-04:00</published><updated>2009-08-26T17:15:52.111-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='visualization'/><category scheme='http://www.blogger.com/atom/ns#' term='research'/><category scheme='http://www.blogger.com/atom/ns#' term='Remote Sensing'/><category scheme='http://www.blogger.com/atom/ns#' term='imagery'/><title type='text'>Using High Resolution Satellite Imagery to Map Black Mangrove on the Texas Gulf Coast</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_VJ2U8mMqPfU/Somn6n0B3GI/AAAAAAAABPI/Xjnc3roMq9E/s1600-h/mangrove01.bmp"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 258px;" src="http://3.bp.blogspot.com/_VJ2U8mMqPfU/Somn6n0B3GI/AAAAAAAABPI/Xjnc3roMq9E/s400/mangrove01.bmp" alt="" id="BLOGGER_PHOTO_ID_5371008656177486946" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:lucida grande;"&gt;Presented 3 February 2009&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:lucida grande;"&gt;Spring 2009 Advanced Remote Sensing&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:lucida grande;"&gt;Florida State Univers&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);font-family:georgia;" &gt;&lt;span style="font-family:lucida grande;"&gt;ity&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:lucida grande;"&gt;&lt;br /&gt;Reviewing the work of Everitt, J.H., Yang, C., Sriharan, S., and Judd, F.W. 2008 Using High Resolution Satellite Imagery to Map Black Mangrove on the Texas Gulf Coast. Journal of Coastal Research, 24:6, 1582-1586&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This is the (very abbreviated) presentation I gave summarizing the article above.  My presentations usually go into illustrative detail about each point, so the information in the Power Point document itself is not as informative.  The presentation discusses a brief introduction on the species, their location and salt-tolerant characteristics, importance of mangroves habitat, etc.  followed by more technical information regarding remote sensing techniques, methodology and sampling design, accuracy assesment and field verification, and finally a brief discussion (mostly omitted from the presentation) regarding analysis of the results of the study.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://justin.berke.googlepages.com/MangrovePresentation.pdf"&gt;&lt;span style="font-weight: bold;"&gt;Download/view the presentation&lt;/span&gt;&lt;br /&gt;(&lt;/a&gt;&lt;a href="http://justin.berke.googlepages.com/MangrovePresentation.pdf"&gt;Mangrove Presentation.pdf&lt;/a&gt;&lt;a href="http://justin.berke.googlepages.com/MangrovePresentation.pdf"&gt;)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://scholar.google.com/scholar?hl=en&amp;amp;q=Using+High+Resolution+Satellite+Imagery+to+Map+Black+Mangrove+on+the+Texas+Gulf+Coast&amp;amp;btnG=Search"&gt;Search for the original article on Google Scholar&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="color: rgb(0, 0, 0);font-family:georgia;" &gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4228793464107368822-2969727281037691144?l=justinberke.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://justinberke.blogspot.com/feeds/2969727281037691144/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4228793464107368822&amp;postID=2969727281037691144' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/2969727281037691144'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/2969727281037691144'/><link rel='alternate' type='text/html' href='http://justinberke.blogspot.com/2009/08/using-high-resolution-satellite-imagery.html' title='Using High Resolution Satellite Imagery to Map Black Mangrove on the Texas Gulf Coast'/><author><name>Justin</name><uri>http://www.blogger.com/profile/13405139779467188945</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VJ2U8mMqPfU/SoSptGXK8iI/AAAAAAAABOQ/qRpz6nqiK7k/S220/pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_VJ2U8mMqPfU/Somn6n0B3GI/AAAAAAAABPI/Xjnc3roMq9E/s72-c/mangrove01.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4228793464107368822.post-6544526968200630006</id><published>2009-08-12T14:41:00.013-04:00</published><updated>2009-08-13T16:29:07.525-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='app'/><category scheme='http://www.blogger.com/atom/ns#' term='tool'/><category scheme='http://www.blogger.com/atom/ns#' term='VB'/><category scheme='http://www.blogger.com/atom/ns#' term='coding'/><title type='text'>When in doubt using Visual Basic, hit Ctrl+T: A short guide to adding controls</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_VJ2U8mMqPfU/SoMQQU29mII/AAAAAAAABNs/F2Iff16Zht0/s1600-h/control01-ArcMapToolbox.gif"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 79px; height: 259px;" src="http://4.bp.blogspot.com/_VJ2U8mMqPfU/SoMQQU29mII/AAAAAAAABNs/F2Iff16Zht0/s400/control01-ArcMapToolbox.gif" alt="" id="BLOGGER_PHOTO_ID_5369153053418952834" border="0" /&gt;&lt;/a&gt;I am used to programming with the Visual Basic Editor in &lt;a href="http://esri.com/"&gt;ArcMap&lt;/a&gt;, Excel, and Access.  I'm building a weather client (upcoming article) that will be a one stop resource for various weather maps, models, and surf reports from around the Internets that I use to help predict my next surfing or diving trip.  The best way to manage all of these maps and graphics that I can think of right now is to use a &lt;span style="font-weight: bold;"&gt;multi page control&lt;/span&gt; to separate the various groups into individual tabs.&lt;br /&gt;&lt;br /&gt;This is easy enough in ArcMap - the MultiPage control is already loaded onto the main toolbar (left).  Visual Basic is a bit more tricky however.&lt;br /&gt;&lt;br /&gt;Many extra options and controls (including &lt;a href="http://justinberke.blogspot.com/2009/07/save-as-open-common-dialog.html"&gt;a previous post about the Common Dialog&lt;/a&gt;) are not automatically loaded onto the Visual Basic 6 general Toolbox by default.  By right clicking in some empty gray space away from a tool, or by pressing Ctrl+T, one can launch the Components window.  From here, a number of additional controls can be added to the toolbox to be inserted into a form or project.  In teh following case, the Microsoft Tabbed Dialog Control 6.0 is checked.  A TabStrip can also be added through the Microsoft Windows Common Controls - I used 6.0 (SP6) which is a few below the Tabbed Dialog Control.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_VJ2U8mMqPfU/SoMSSq5XuII/AAAAAAAABN0/gy0jRHzpgJw/s1600-h/control02-ControlDialog.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 361px;" src="http://3.bp.blogspot.com/_VJ2U8mMqPfU/SoMSSq5XuII/AAAAAAAABN0/gy0jRHzpgJw/s400/control02-ControlDialog.gif" alt="" id="BLOGGER_PHOTO_ID_5369155292717627522" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;A multi page tab system can be inserted to to organize the data inside of this new form:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_VJ2U8mMqPfU/SoMUYl6AfNI/AAAAAAAABN8/vKD_GgjRNuU/s1600-h/control03-Tabs.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 303px; height: 233px;" src="http://4.bp.blogspot.com/_VJ2U8mMqPfU/SoMUYl6AfNI/AAAAAAAABN8/vKD_GgjRNuU/s400/control03-Tabs.gif" alt="" id="BLOGGER_PHOTO_ID_5369157593480592594" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This is the VB 6 toolbox from which the new control can be called:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_VJ2U8mMqPfU/SoMYBLx67XI/AAAAAAAABOE/d-9S9upE9Vs/s1600-h/control04-VBtoolbox.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: left; cursor: pointer; width: 82px; height: 374px;" src="http://4.bp.blogspot.com/_VJ2U8mMqPfU/SoMYBLx67XI/AAAAAAAABOE/d-9S9upE9Vs/s400/control04-VBtoolbox.gif" alt="" id="BLOGGER_PHOTO_ID_5369161589376871794" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;If there seems to be something missing from a Visual Basic toolbox, hit Ctrl+T and skim through the available controls - it will probably be located in there.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4228793464107368822-6544526968200630006?l=justinberke.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://justinberke.blogspot.com/feeds/6544526968200630006/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4228793464107368822&amp;postID=6544526968200630006' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/6544526968200630006'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/6544526968200630006'/><link rel='alternate' type='text/html' href='http://justinberke.blogspot.com/2009/08/when-in-doubt-using-visual-basic-hit.html' title='When in doubt using Visual Basic, hit Ctrl+T: A short guide to adding controls'/><author><name>Justin</name><uri>http://www.blogger.com/profile/13405139779467188945</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VJ2U8mMqPfU/SoSptGXK8iI/AAAAAAAABOQ/qRpz6nqiK7k/S220/pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_VJ2U8mMqPfU/SoMQQU29mII/AAAAAAAABNs/F2Iff16Zht0/s72-c/control01-ArcMapToolbox.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4228793464107368822.post-4961440438492283951</id><published>2009-08-05T09:23:00.007-04:00</published><updated>2009-08-05T10:11:47.243-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='symbology'/><category scheme='http://www.blogger.com/atom/ns#' term='GIS'/><category scheme='http://www.blogger.com/atom/ns#' term='cartography'/><title type='text'>ArcMap Win: Access Data View Elements from the Print Layout View</title><content type='html'>When in the ArcGIS layout view, double click on the data frame to access annotation, graphics, or any other cartographic elements that are located in Data View.  Elements found only in layout view (legend, north arrow, scale bar, text, etc.) will not be selected when accessing the data view from layout view.  It's a quick way to manipulate the map design without having to fully switch between the two views or without having to redraw the map.&lt;br /&gt;&lt;br /&gt;When you double click on the data frame a small, hashed border will appear around the frame's neatline signifying that only the elements within the data frame are being accessed.&lt;br /&gt;&lt;br /&gt;This is great for placing manual text annotation within the map itself, rather than just adding various extra text elements to layout view.  By placing them into the map it is possible to pan around while keeping the label in reference with the geography of the area of interest.&lt;br /&gt;&lt;br /&gt;Here the legend graphics, scale bar, and the text element of Georgia are selected in layout view:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VJ2U8mMqPfU/SnmQhzv3-GI/AAAAAAAABNI/4-eNono9M3k/s1600-h/dataview-01-LayoutElements.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 358px; height: 400px;" src="http://2.bp.blogspot.com/_VJ2U8mMqPfU/SnmQhzv3-GI/AAAAAAAABNI/4-eNono9M3k/s400/dataview-01-LayoutElements.gif" alt="" id="BLOGGER_PHOTO_ID_5366479341489748066" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Now when attempting to select all elements (via the Select Elements tool, or by Edit :: Select All Elements), only those elements included in Data View are selected.  In this case, all city and state labels, and interstate markers were converted to annotation:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_VJ2U8mMqPfU/SnmQh4gG5RI/AAAAAAAABNQ/vp7WyW8QvdA/s1600-h/dataview-02-DataViewElements.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 358px; height: 400px;" src="http://1.bp.blogspot.com/_VJ2U8mMqPfU/SnmQh4gG5RI/AAAAAAAABNQ/vp7WyW8QvdA/s400/dataview-02-DataViewElements.gif" alt="" id="BLOGGER_PHOTO_ID_5366479342765794578" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4228793464107368822-4961440438492283951?l=justinberke.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://justinberke.blogspot.com/feeds/4961440438492283951/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4228793464107368822&amp;postID=4961440438492283951' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/4961440438492283951'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/4961440438492283951'/><link rel='alternate' type='text/html' href='http://justinberke.blogspot.com/2009/08/arcmap-win-access-data-view-elements.html' title='ArcMap Win: Access Data View Elements from the Print Layout View'/><author><name>Justin</name><uri>http://www.blogger.com/profile/13405139779467188945</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VJ2U8mMqPfU/SoSptGXK8iI/AAAAAAAABOQ/qRpz6nqiK7k/S220/pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_VJ2U8mMqPfU/SnmQhzv3-GI/AAAAAAAABNI/4-eNono9M3k/s72-c/dataview-01-LayoutElements.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4228793464107368822.post-7916292838657987065</id><published>2009-07-14T22:36:00.005-04:00</published><updated>2009-07-18T23:55:47.240-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lol'/><category scheme='http://www.blogger.com/atom/ns#' term='web-tech'/><title type='text'>Additional Blog for Mobile Updates</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.slashphone.com/media/data/796/samsung-alias-2.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 237px; height: 225px;" src="http://www.slashphone.com/media/data/796/samsung-alias-2.jpg" alt="" border="0" /&gt;&lt;/a&gt;I started a blog for my cell phone.  It has a qwerty keyboard and camera and I seem to often encounter mildly entertaining hilarity.  The internets must know about this.&lt;br /&gt;&lt;br /&gt;Peep &lt;a href="http://justin-berke.blogspot.com/"&gt;justin-berke.blogspot.com&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4228793464107368822-7916292838657987065?l=justinberke.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://justinberke.blogspot.com/feeds/7916292838657987065/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4228793464107368822&amp;postID=7916292838657987065' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/7916292838657987065'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/7916292838657987065'/><link rel='alternate' type='text/html' href='http://justinberke.blogspot.com/2009/07/additional-blog-for-mobile-updates.html' title='Additional Blog for Mobile Updates'/><author><name>Justin</name><uri>http://www.blogger.com/profile/13405139779467188945</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VJ2U8mMqPfU/SoSptGXK8iI/AAAAAAAABOQ/qRpz6nqiK7k/S220/pic.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4228793464107368822.post-5673701553276023759</id><published>2009-07-13T22:00:00.004-04:00</published><updated>2010-02-21T23:12:41.673-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lol'/><category scheme='http://www.blogger.com/atom/ns#' term='web site idea'/><category scheme='http://www.blogger.com/atom/ns#' term='web-tech'/><title type='text'>Website Ideas: FML-Style Web Sites</title><content type='html'>In the style of &lt;a href="http://fmylife.com/"&gt;FML&lt;/a&gt; and &lt;a href="http://www.blogger.com/textsfromlastnight.com"&gt;&lt;/a&gt;&lt;a href="http://www.blogger.com/textsfromlastnight.com"&gt;TFLN&lt;/a&gt;,  where users submit short, text based hilarity, I'd like to build three web sites.&lt;br /&gt;&lt;br /&gt;One is dedicated solely to "That's what she said"  opportunities from inappropriate situations.  As much as I would like to shout it across a meeting with my division director, or at my roommate's mother when she walks into a giant bucket of hilarity, I'm often bound to a puritanically imposed sense of of tact.&lt;br /&gt;&lt;br /&gt;The second is simply a compilation of quasi-believable erroneous facts.  For instance, skin is actually an acronym for its composing elements: Sodium Potassium Iron &amp;amp; Nitrogen.  The human body contains exactly 100 bones (101 if you count the skull).  Fire ants prefer hickory BBQ sauce.  Pi is exactly 3.  That sort of thing.  &lt;a href="http://www.youtube.com/watch?v=drE5cHe6c3s"&gt;See Look Around You&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;In an &lt;a href="http://xkcd.com/"&gt;xkcd&lt;/a&gt; stylee of nerdiness, the last is a site dedicated to user-submitted equations, algorithms, functions, statistical inferences, etc. that model everyday occurrences or nuisances.  For instance, Matt's First Law of Mexican Restaurants states that "The quality of cuisine at a Mexican restaurant is inversely proportional to the cleanliness of its bathrooms," or my postulation that "the likelihood of vegetarian options existing on a given menu decreases as the number of televisions at a restaurant increase."  Yeah, statistics jokes are GOLD these days.  Also, jokes involving computer programming/coding or diagrams (chemical, physical, electrical, etc.) are fair game.  OpenWetWare has a cool &lt;a href="http://openwetware.org/wiki/Help:Chemical_diagrams"&gt;santax&lt;/a&gt; for creating diagrams.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Update: &lt;a href="http://thisisindexed.com/"&gt;thisisindexed.com&lt;/a&gt; &lt;span style="font-size: 85%;"&gt;(thanks, &lt;a href="http://uniqueoriginal.blogspot.com/"&gt;DLC&lt;/a&gt;)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Update: &lt;a href="http://graphjam.com/"&gt;GraphJam&lt;/a&gt; (thanks, &lt;a href="http://cheezburger.com/sites"&gt;lolcat network&lt;/a&gt;) &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;I created new blog called &lt;a href="http://unnecessarymodeling.blogspot.com/"&gt;Unnecessary Modeling&lt;/a&gt;. For now I'm using the graph builder at GraphJam for my templates, but they're not showing up as well as they could, so I might switch over to Google Docs soon.&lt;/span&gt;&lt;/b&gt;  &lt;/blockquote&gt;&lt;br /&gt;These are not really that great but I would like to learn basic web based database management programming.  I love &lt;a href="http://en.wikipedia.org/wiki/LAMP_%28software_bundle%29"&gt;LAMP&lt;/a&gt;!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4228793464107368822-5673701553276023759?l=justinberke.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://justinberke.blogspot.com/feeds/5673701553276023759/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4228793464107368822&amp;postID=5673701553276023759' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/5673701553276023759'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/5673701553276023759'/><link rel='alternate' type='text/html' href='http://justinberke.blogspot.com/2009/07/website-idea-fml-style-sites.html' title='Website Ideas: FML-Style Web Sites'/><author><name>Justin</name><uri>http://www.blogger.com/profile/13405139779467188945</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VJ2U8mMqPfU/SoSptGXK8iI/AAAAAAAABOQ/qRpz6nqiK7k/S220/pic.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4228793464107368822.post-6898591507143156844</id><published>2009-07-09T22:30:00.000-04:00</published><updated>2009-07-09T22:32:44.868-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='web site idea'/><title type='text'>Website Idea: Marriage pools</title><content type='html'>How many weddings have you been to that have ended in divorce?  How many are probably on their way out?  I haven't really been to many, but I'm looking at .500.  Not a great statement for the high standards of the sanctity of the "eternal bond" is it?&lt;br /&gt;&lt;br /&gt;Wouldn't it be nice to stop loosing money on showers, gifts, and weekends of preparation?  I propose a website that will allow friends, family, and other random weirdos to throw down a few bucks and make a bet on how long a marriage will last.  Conversely, one can wager that a marriage will last forever.  HA!  Seriously though, you can make money on others misery.  God bless America.&lt;br /&gt;&lt;br /&gt;It can work along the lines of general things like how long will it last to tie breaker to more of a point system, with topics like picking the reason of termination, who was at fault, etc.  The more people who enter, the better the outcome will be, of course.  Pools can be open or closed, which leads to the more public option: CELEBRITY WEDDINGS!&lt;br /&gt;&lt;br /&gt;All information is confidential so the couple or other family members don't have to know which of their greedy friends and family are betting for or against them.&lt;br /&gt;&lt;br /&gt;The closest thing I found on the web is &lt;a href="http://weddingbetting.com/"&gt;weddingbetting.com&lt;/a&gt; which seems to be some sort of &lt;a href="http://hotornot.com/"&gt;Hot or Not&lt;/a&gt; for weddings.  Miss.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4228793464107368822-6898591507143156844?l=justinberke.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://justinberke.blogspot.com/feeds/6898591507143156844/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4228793464107368822&amp;postID=6898591507143156844' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/6898591507143156844'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/6898591507143156844'/><link rel='alternate' type='text/html' href='http://justinberke.blogspot.com/2009/07/website-idea-marriage-pools.html' title='Website Idea: Marriage pools'/><author><name>Justin</name><uri>http://www.blogger.com/profile/13405139779467188945</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VJ2U8mMqPfU/SoSptGXK8iI/AAAAAAAABOQ/qRpz6nqiK7k/S220/pic.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4228793464107368822.post-4372637633909178989</id><published>2009-07-06T17:30:00.026-04:00</published><updated>2009-10-29T16:37:57.559-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='app'/><category scheme='http://www.blogger.com/atom/ns#' term='tool'/><category scheme='http://www.blogger.com/atom/ns#' term='VB'/><category scheme='http://www.blogger.com/atom/ns#' term='ArcObjects'/><category scheme='http://www.blogger.com/atom/ns#' term='coding'/><title type='text'>Calling the Save As / Open / Common Dialog</title><content type='html'>&lt;table bg="" align="center" border="1" cellpadding="5" width="80%" bgcolor="#FFFFFF"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-weight: bold;"&gt;NOTE:&lt;/span&gt; I'm experiencing an error when I distribute ArcMap projects using this method.  I am fairly sure this is because I have Visual Basic (Studio) 6 installed on my main development workstation, and I'm attempting to call a control from Visual Basic Studio (VB6).  Calling that control without VB6 installed separately will cause the application to fail when distributed to other machines.&lt;br /&gt;&lt;br /&gt;I am currently looking for a VBA solution to this, but the code will indeed work well in VB6.&lt;br /&gt;&lt;span style="font-size:78%;"&gt; - Updated 10/29/2009&lt;/span&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_VJ2U8mMqPfU/SlOZj-pA8tI/AAAAAAAABJo/lRLQ3jG1d0k/s1600-h/Common04-Open.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 296px;" src="http://1.bp.blogspot.com/_VJ2U8mMqPfU/SlOZj-pA8tI/AAAAAAAABJo/lRLQ3jG1d0k/s400/Common04-Open.gif" alt="" id="BLOGGER_PHOTO_ID_5355793225263149778" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;VB has been wonderful to me so far, however I'm trying to do some exporting and needed to figure out how to navigate around the hard drive for a directory to which I can save some files.  The Common Dialog is the place to look to launch the specialized dialog boxes that let a user navigate around the hard/network drives on a computer.&lt;br /&gt;&lt;br /&gt;The CommonDialog (one word, in the Visual Basic Editor toolbox) needs to be added to the VB Toolbox, then that control needs simply to be added to your form to be called by various procedures.  Here's how it works:&lt;ul&gt;&lt;li&gt;Open a new Visual Basic project&lt;/li&gt;&lt;li&gt;Insert a new UserForm, then add the following controls&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-size:85%;"&gt;(If it's not already open, activate the VB toolbox: View :: Toolbox)&lt;/span&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;table align="center" border="0"&gt;&lt;tbody&gt;&lt;tr  style="font-family:arial;"&gt;&lt;td  align="center" style="font-family:arial;"&gt;&lt;span style="font-weight: bold;"&gt;Component/Property&lt;/span&gt;&lt;br /&gt;Command Button&lt;br /&gt;Command Button&lt;br /&gt;Text Box&lt;br /&gt;Text Box&lt;/td&gt;&lt;br /&gt;&lt;td&gt;&lt;span style="font-weight: bold;"&gt;Name&lt;/span&gt;&lt;br /&gt;cmdOpen&lt;br /&gt;cmdSaveAs&lt;br /&gt;txtOpen&lt;br /&gt;txtSaveAs&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_VJ2U8mMqPfU/SlNqprO2aMI/AAAAAAAABJQ/iA0rGYag3ck/s1600-h/Common01-Setup.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 178px;" src="http://2.bp.blogspot.com/_VJ2U8mMqPfU/SlNqprO2aMI/AAAAAAAABJQ/iA0rGYag3ck/s320/Common01-Setup.gif" alt="" id="BLOGGER_PHOTO_ID_5355741646085843138" border="0" /&gt;&lt;span style="font-size:78%;"&gt;[Click to enlarge]&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;If it's not already open, activate the VB toolbox&lt;/li&gt;&lt;li&gt;Right click in an empty gray area on the toolbox and choose Additional Controls&lt;/li&gt;&lt;li&gt;Scroll down and put an X next to "Microsoft Common Dialog Control, version x" and click OK&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Add a CommonDialog control to the form (named CommonDialog1 by default)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_VJ2U8mMqPfU/SlN1s5O8eRI/AAAAAAAABJY/IyLBQkC3jTM/s1600-h/Common02-CommonControl.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 186px;" src="http://1.bp.blogspot.com/_VJ2U8mMqPfU/SlN1s5O8eRI/AAAAAAAABJY/IyLBQkC3jTM/s320/Common02-CommonControl.gif" alt="" id="BLOGGER_PHOTO_ID_5355753796011850002" border="0" /&gt;&lt;/a&gt;&lt;ul&gt;&lt;li&gt;Enter the following code for the command buttons to call the respective dialog boxes:&lt;/li&gt;&lt;/ul&gt;&lt;blockquote&gt;&lt;code&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Private Sub&lt;/span&gt; cmdOpen_Click()&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;'Show the Open dialog&lt;/span&gt;&lt;br /&gt;CommonDialog1.ShowOpen&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;'Show the selected file to open&lt;/span&gt;&lt;br /&gt;txtOpen.Text = CommonDialog1.FileName&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;End Sub&lt;/span&gt;&lt;br /&gt;_____________________________________&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;Private Sub&lt;/span&gt; cmdSaveAs_Click()&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;'Show the Save As dialog&lt;/span&gt;&lt;br /&gt;CommonDialog1.ShowSave&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;'Show the Save As filename&lt;/span&gt;&lt;br /&gt;txtSaveAs.Text = CommonDialog1.FileName&lt;br /&gt;&lt;span style="color: rgb(51, 51, 255);"&gt;End Sub&lt;/span&gt;&lt;br /&gt;&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Run the form, and test it by launching the Open/Save As dialogs from the respective command buttons.  Selecting a file will print the path in the adjacent text box.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_VJ2U8mMqPfU/SlOVXro1g3I/AAAAAAAABJg/FsWTBN1I09g/s1600-h/Common03-Form.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 99px;" src="http://1.bp.blogspot.com/_VJ2U8mMqPfU/SlOVXro1g3I/AAAAAAAABJg/FsWTBN1I09g/s400/Common03-Form.gif" alt="" id="BLOGGER_PHOTO_ID_5355788615957185394" border="0" /&gt;&lt;/a&gt;From here one can call &lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;CommonDialog1.FileName &lt;/span&gt;&lt;/span&gt;in the place of a static/predefined path when opening or saving files from a form.&lt;br /&gt;&lt;br /&gt;Other Show- methods include ShowColor (see MS Paint), ShowFont, ShowHelp, and ShowPrinter.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;Keywords:&lt;br /&gt;ArcObjects, VBA, VB6&lt;br /&gt;common dialog, CommonDialog&lt;br /&gt;OpenFile&lt;br /&gt;SaveFile&lt;br /&gt;Save As dialog&lt;br /&gt;Open dialog&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4228793464107368822-4372637633909178989?l=justinberke.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://justinberke.blogspot.com/feeds/4372637633909178989/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4228793464107368822&amp;postID=4372637633909178989' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/4372637633909178989'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/4372637633909178989'/><link rel='alternate' type='text/html' href='http://justinberke.blogspot.com/2009/07/save-as-open-common-dialog.html' title='Calling the Save As / Open / Common Dialog'/><author><name>Justin</name><uri>http://www.blogger.com/profile/13405139779467188945</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VJ2U8mMqPfU/SoSptGXK8iI/AAAAAAAABOQ/qRpz6nqiK7k/S220/pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_VJ2U8mMqPfU/SlOZj-pA8tI/AAAAAAAABJo/lRLQ3jG1d0k/s72-c/Common04-Open.gif' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4228793464107368822.post-1476620629998695086</id><published>2009-06-04T11:17:00.005-04:00</published><updated>2009-06-04T12:12:42.909-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GIS'/><category scheme='http://www.blogger.com/atom/ns#' term='fail'/><title type='text'>Microsoft Office 2007: Fail</title><content type='html'>Not impressed.  Whatsoever.&lt;br /&gt;&lt;br /&gt;Microsoft Office 2007 is clunky, &lt;a href="http://officeblogs.net/ui/sizepics/Excel2007.png" target="_pic"&gt;awkward&lt;/a&gt;, and uninformed.  Also it seems like it's trying to dress like a Mac.  Look, there's nothing cool, hip, or sleek about spreadsheets or databases.  Don't kid yourself on this one.  Keep it simple.&lt;br /&gt;&lt;br /&gt;Most importantly to me though is that Excel 2007 no longer supports dBase IV, the .dbf file type, because they decided that "nobody uses it anymore." It turns out that DBF is one of a hand full full of required files that make up a shapefile in the world of another proprietary, monopolistic software giant: ESRI's ArcGIS.  Don't get me wrong, I bought into the ArcMap scene as well, but it baffles me that A) Microsoft did not do their research before giving the axe to DBF, and B) ESRI did not talk to Microsoft about what is to be expected in their next huge software rollout.  FAIL. The both of you.&lt;br /&gt;&lt;span style="font-style: italic;font-size:130%;" &gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Anyway, Office 2007 was recently loaded onto my machine at work, and I quickly opted to have Office 2003 installed underneath.  I can live with 2007 on my computer, but I am not interested in using it (at least Excel) on a regular basis.  I decided to go ahead and return Excel 2003 to the default program used to open .xls files:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;From the Start Menu choose Run&lt;/li&gt;&lt;li&gt;Enter the following (the path may be different on another machine) and hit Enter/OK&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:arial;"&gt;"C:\Program Files\Microsoft Office\OFFICE11\EXCEL.EXE" /regserver&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;That's it. The OFFICE11 directory is where Office 2003 lives, and will now be used to open .xls files with Office 2007 installed as well.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-size:130%;" &gt;&lt;span style="font-weight: bold;"&gt;Other Options:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Save an Excel 2007 file as .csv, import the CSV in Access 2007 and export as a DBF. What a lame, unnecessary waste of time.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Download the &lt;span style="color: rgb(0, 0, 0); font-weight: bold; font-style: italic;"&gt;free &lt;/span&gt;&lt;a href="http://www.openoffice.org/" target="_OO"&gt;OpenOffice&lt;/a&gt; software package. The DBF support from OpenOffice is supposedly much for friendly than Excel ever offered, though I have not gotten around to trying it out.&lt;/li&gt;&lt;li&gt;Change industries.  Open a surf shop.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4228793464107368822-1476620629998695086?l=justinberke.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://justinberke.blogspot.com/feeds/1476620629998695086/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4228793464107368822&amp;postID=1476620629998695086' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/1476620629998695086'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/1476620629998695086'/><link rel='alternate' type='text/html' href='http://justinberke.blogspot.com/2009/06/microsoft-office-2007-fail.html' title='Microsoft Office 2007: Fail'/><author><name>Justin</name><uri>http://www.blogger.com/profile/13405139779467188945</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VJ2U8mMqPfU/SoSptGXK8iI/AAAAAAAABOQ/qRpz6nqiK7k/S220/pic.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4228793464107368822.post-3219550952610412818</id><published>2009-05-27T01:27:00.016-04:00</published><updated>2009-05-28T01:14:31.443-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='crafts'/><category scheme='http://www.blogger.com/atom/ns#' term='DIY'/><category scheme='http://www.blogger.com/atom/ns#' term='music production'/><category scheme='http://www.blogger.com/atom/ns#' term='hardware'/><title type='text'>DIY Inexpensive Computer</title><content type='html'>My laptop is a few years old now (Hanukkah/Christmas gift in 2005) and I haven't upgraded the RAM or anything yet.  Although it works just fine for my needs it begins to be a little slow during mixing and mastering of large projects.  Putting together a near top of the line machine that is memory and processing heavy from commercial web sites (Dell, etc.) usually comes with tons of expensive junk that I don't want nor need (high-end video, expensive CD/DVD drives, Windows Vista, other software bundles, warrenty, etc.).&lt;br /&gt;&lt;br /&gt;I decided to save a little money on a case (usually between $40 and $100) and went for a unique design.  Mounting a computer on a piece of plywood is sort of artsy (technology vs. simple wood), looks neat, and with all of the pieces exposed the computer will stay very cool; thus will run faster.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_VJ2U8mMqPfU/Sh4GtRdBgVI/AAAAAAAAAyM/LYpnsGzN7uI/s1600-h/rock_machine01.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 358px; height: 296px;" src="http://3.bp.blogspot.com/_VJ2U8mMqPfU/Sh4GtRdBgVI/AAAAAAAAAyM/LYpnsGzN7uI/s320/rock_machine01.jpg" alt="" id="BLOGGER_PHOTO_ID_5340713582957003090" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:78%;"&gt;[Click to enlarge]&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;&lt;u&gt;Overview of building a computer from scratch&lt;/u&gt;&lt;/span&gt;:&lt;/span&gt;&lt;br /&gt;One can easily put together a powerful computer on any number of commercial websites (Dell, etc.), but when it comes down to it building a computer from scratch is not that difficult. Seven basic pieces make up a computer these days.  You'll need a &lt;span style="font-weight: bold;"&gt;motherboard &lt;/span&gt;to route all the signals from the various components, a &lt;span style="font-weight: bold;"&gt;processor &lt;/span&gt;to run calculations and to "think," &lt;span style="font-weight: bold;"&gt;CPU cooling fan&lt;/span&gt; that sits on top of the processor to keep it cool (&lt;span style="color: rgb(255, 0, 0);"&gt;do not run a computer without this or you will fry the processor&lt;/span&gt;), &lt;span style="font-weight: bold;"&gt;memory/RAM&lt;/span&gt; to provide a quick place to store calculations for the CPU to process, a &lt;span style="font-weight: bold;"&gt;hard drive&lt;/span&gt; to store information, and a &lt;span style="font-weight: bold;"&gt;power supply&lt;/span&gt; to distribute power to all of these components.  Usually you'll want a &lt;span style="font-weight: bold;"&gt;CD/DVD drive&lt;/span&gt; as well, but even these are becoming outdated media - especially since it's possible to boot to a USB jump drive to install an operating system and other software.&lt;br /&gt;&lt;br /&gt;Most small desktop computers have audio, video, eithernet, and USB components &lt;a href="http://images.tigerdirect.com/SkuImages/gallery/large/Intel-D945GCPE-I69-2154-f.JPG"&gt;built into the motherboard&lt;/a&gt; so these are either A) not necessary to add, or B) can be added/upgraded via &lt;a href="http://static.howstuffworks.com/gif/agp-pci.jpg"&gt;PCI slots&lt;/a&gt;.  I added a firewire hub via PCI card.  Audio and video upgrades won't be necessary since I will be using my mixer as the auido card (via firewire), and my needs are not graphics-heavy so I don't need to use an upgraded graphics card (usually between $40-$200 for gamers/video producers).  Don't forget a mouse, keyboard, and monitor.  NOW it's done.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://images.tigerdirect.com/itemDetails/I69-2154/I69-2154-out2b-hl.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 371px; height: 358px;" src="http://images.tigerdirect.com/itemDetails/I69-2154/I69-2154-out2b-hl.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;&lt;u&gt;&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;&lt;u&gt;Construction / Pricing&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Computer - $256.99 (add $20 shipping)&lt;ul&gt;&lt;li&gt;Intel D945GCPE 3.0 GHz MicroATX Motherboard - $56.41&lt;br /&gt;- Onboard audio, video, eithernet, USB 2.0&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Intel Pentium D 925 3.0 GHz Dual-Core Processor - $73.58&lt;br /&gt;&lt;/li&gt;&lt;li&gt;CPU Cooling Fan - 24.99&lt;br /&gt;&lt;/li&gt;&lt;li&gt;2 GB DDR2 RAM - $59.99&lt;br /&gt;- 2 x 1024 MB sticks&lt;/li&gt;&lt;li&gt;350-Watt ATX Power supply - $24.99&lt;/li&gt;&lt;li&gt;4-port Firewire PCI Card - $16.99&lt;/li&gt;&lt;li&gt;I had a spare 80GB hard drive laying around but these are cheap (as of summer 2009, a 500GB internal SATA hard drive goes for 60 bucks. Can't beat that! [P.S. yes, you can beat that.])&lt;br /&gt;&lt;/li&gt;&lt;li&gt;I also had a spare CD/DVD burner (~$40)&lt;/li&gt;&lt;li&gt;Go to a local computer repair/electronics shop and pick up a &lt;a href="http://www.silverpcs.com/images/lianli_powerledswitch_b.jpg"&gt;soft booting power switch/restart switch&lt;/a&gt;, &lt;a href="http://www.silverpcs.com/images/lianli_led_blue.jpg"&gt;LED lights&lt;/a&gt;, and a &lt;a href="http://www.clearpc.ca/catalog/images/speaker.JPG"&gt;small PC speaker&lt;/a&gt;.  These plug into pins on the motherboard (illustrated very well on the motherboard's instructions sheet) and let you turn the computer on.  The LED's will let you know when the machine is running, and the speaker beeps when the computer boots or has an error.  These are very cheap: under $5.&lt;/li&gt;&lt;/ul&gt;Mounting - $20-30&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Plywood board (around 14" x 18" x 1/2")&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Machine screws 1 1/2"&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Rubber washers&lt;/li&gt;&lt;li&gt;Plastic spacers&lt;/li&gt;&lt;li&gt;Hex nuts&lt;br /&gt;- Mark and drill holes on the plywood where mounting screws secure the motherboard (look for the mounting holes on the motherboard)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_VJ2U8mMqPfU/Sh4Ul5u8S6I/AAAAAAAAAyc/63JtLYBQlq8/s1600-h/diagram.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 248px; height: 153px;" src="http://4.bp.blogspot.com/_VJ2U8mMqPfU/Sh4Ul5u8S6I/AAAAAAAAAyc/63JtLYBQlq8/s400/diagram.JPG" alt="" id="BLOGGER_PHOTO_ID_5340728849493412770" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Drywall screws&lt;/li&gt;&lt;li&gt;4 rubber feet&lt;br /&gt;- Drill four pilot holes through the plywood&lt;br /&gt;- Drive a drywall screw (sharp point) through the hole; it should be a hand tight fit&lt;br /&gt;- Screw on the rubber stoppers&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Romex / strong gauge wire&lt;br /&gt;- The two &lt;span style="font-weight: bold;"&gt;coated&lt;/span&gt; wires in &lt;a href="http://www.vhaudio.com/images/romex.jpg"&gt;romex wire bundles&lt;/a&gt; are great for mounting the power supply, hard drive, and CD/DVD/Floppy drives to the plywood.  Do not use the uncoated ground wire&lt;br /&gt;- Drill small holes through the plywood, just large enough to fit the wire through&lt;br /&gt;- Use pliers to bend the wire around squared corners to fit the component well, and to pull the wire tight on the bottom of the board&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_VJ2U8mMqPfU/Sh4aygb-_tI/AAAAAAAAAyk/QPno5S4-2ws/s1600-h/rock_machine02.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 206px;" src="http://1.bp.blogspot.com/_VJ2U8mMqPfU/Sh4aygb-_tI/AAAAAAAAAyk/QPno5S4-2ws/s320/rock_machine02.jpg" alt="" id="BLOGGER_PHOTO_ID_5340735663111077586" border="0" /&gt;&lt;/a&gt;I added a couple more bolts/plastic spacers to help secure the drives/power box in place.  Otherwise that's it.  Now just add a monitor (I found a nice flat panel LCD on Craigslist for $100), keyboard, mouse, and install an operating system and you're ready to go.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_VJ2U8mMqPfU/Sh4b9zH0DoI/AAAAAAAAAy0/UBAUNUP6K5E/s1600-h/rock_machine03.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 237px;" src="http://4.bp.blogspot.com/_VJ2U8mMqPfU/Sh4b9zH0DoI/AAAAAAAAAy0/UBAUNUP6K5E/s320/rock_machine03.jpg" alt="" id="BLOGGER_PHOTO_ID_5340736956616937090" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4228793464107368822-3219550952610412818?l=justinberke.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://justinberke.blogspot.com/feeds/3219550952610412818/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4228793464107368822&amp;postID=3219550952610412818' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/3219550952610412818'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/3219550952610412818'/><link rel='alternate' type='text/html' href='http://justinberke.blogspot.com/2009/05/diy-cheap-computer.html' title='DIY Inexpensive Computer'/><author><name>Justin</name><uri>http://www.blogger.com/profile/13405139779467188945</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VJ2U8mMqPfU/SoSptGXK8iI/AAAAAAAABOQ/qRpz6nqiK7k/S220/pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_VJ2U8mMqPfU/Sh4GtRdBgVI/AAAAAAAAAyM/LYpnsGzN7uI/s72-c/rock_machine01.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4228793464107368822.post-6315251535482300785</id><published>2009-05-14T16:22:00.015-04:00</published><updated>2011-02-03T14:46:22.027-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='music production'/><category scheme='http://www.blogger.com/atom/ns#' term='hardware'/><title type='text'>My Studio Hardware</title><content type='html'>&lt;span style="font-style: italic;"&gt;AKA Rack additions, $100 at a time&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I've been building my little studio for long enough now that I figure that I'd post my thoughts on what I've come across.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;u&gt;Alesis MultiMix 12 FireWire 12-Channel Analog Mixer&lt;/u&gt;&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;a href="http://justin.berke.googlepages.com/mixer.jpg" target="_pic" title="Alesis MultiMix 12 Firewire 12-Channel Analog Mixer"&gt;&lt;img border="0" height="137" src="https://sites.google.com/site/justinberke2/mixer.jpg" width="210" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size: 78%;"&gt;[Click to Enlarge]&lt;/span&gt;&lt;/center&gt;&lt;br /&gt;My setup is based around this mixer when it's time to record.  Lots of control over the inputs and outputs makes it great for controlling various keyboards, turn tables, effects, etc. in a live setting as well.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;Pros&lt;/span&gt;:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Firewire over USB allows track by track recording in a digital audio workstation (DAW), rather than USB which only sends a stereo mix of all inputs&lt;/li&gt;&lt;li&gt;100 28-bit onboard effects are pretty decent - easy control over how wet/dry the effect will be for each individual channel&lt;/li&gt;&lt;li&gt;A little EQ and panning is standard.  Not bad.&lt;/li&gt;&lt;li&gt;Onboard XLR / gain / phantom power - neat&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Lots of output options / multi-out combinations&lt;/li&gt;&lt;li&gt;Easy effects loop (out/return) option available&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Cons&lt;/span&gt;:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Onboard effects are only applied to analog outputs - The digital mix going to the DAW via Firewire is dry.  I've been meaning to try looping a wet stereo output through two channels, and recording just those two tracks via DAW, but that has its own problems.  IT could work, but it's too much effort&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Alesis has mostly shitty software support (along with M-Audio).  A lot of reviews were complaining about their computers not recognizing it.  It can be tricky, but just make sure to install all software before plugging it into a computer&lt;/li&gt;&lt;li&gt;Only four channels of XLR/gain: The expensive solution is to upgrade to the MultiMix 16 (for twice the price), or add a preamp to your rack.  I chose the latter (below)&lt;/li&gt;&lt;/ul&gt;All in all, this is a great starter to mid-range mixer.  It was cheap, and built pretty well.  The effects knob feels a little loose, but it's hanging in well enough.  It provides great quality digital audio and minimal if any latency during recording.  Very powerful for the price.  Unfortunately it has been discontinued.  I'd recommend picking one up if you find it floating around on Craigslist or something.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Behringer Eurorack UB 1202 (outboard auxiliary mixer)&lt;/u&gt;:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_VJ2U8mMqPfU/TUsD0FJZEII/AAAAAAAAB0I/S9-bi6VnMhA/s1600/BehringerEurorackUB1202Mixer.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="181" src="http://1.bp.blogspot.com/_VJ2U8mMqPfU/TUsD0FJZEII/AAAAAAAAB0I/S9-bi6VnMhA/s200/BehringerEurorackUB1202Mixer.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;The Alesis Multimix is a great way to record multiple tracks, but I don't always need to record all the tracks I need to hear in a recording session.&amp;nbsp; When I'm laying down drums tracks with my band, I find it helpful to hear as many of the other parts as possible (guitars, bass, vocals, etc.) so I don't have to struggle to listen for different cues that I'm not used to.&amp;nbsp; The guitar amps and vocals are brought up to level and mixed on this board, then a stereo signal is sent to an open channel on the main board and blended into my headphone mix.&amp;nbsp; This is a really powerful tool for around $80, new.&lt;br /&gt;&lt;br /&gt;Additionally it's a cheap, small, and effective mixer for a live show with four channels of gain, phantom power, plenty of outputs, and even some effects routing options.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;u&gt;&lt;br /&gt;Nady PRA-8 Preamp&lt;/u&gt;&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;a href="http://justin.berke.googlepages.com/nadypra-8preamp.jpg" target="_pic" title="Nadu PRA-8 Preamp"&gt;&lt;img border="0" height="31" src="https://sites.google.com/site/justinberke2/nadypra-8preamp.jpg" width="210" /&gt;&lt;/a&gt;&lt;/center&gt;&lt;br /&gt;This is a pretty decent unit for around $100.  I cannot complain about much noise at all - haven't noticed any additional noise from low quality microphones.  It has 8 channels of gain to add to the Alesis mixer, and converts XLR inputs to 1/4" outputs - which work very well as additional inputs into the mixer.  Two birds: RIP.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;u&gt;Behringer DSP2024P Virtualizer Pro - Rack Effects Module&lt;/u&gt;&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;a href="http://justin.berke.googlepages.com/behringerDSP2024p.jpg" target="_pic" title="Behringer DSP2024P Virtualizer Pro"&gt;&lt;img border="0" height="41" src="https://sites.google.com/site/justinberke2/behringerDSP2024p.jpg" width="210" /&gt;&lt;/a&gt;&lt;/center&gt;&lt;br /&gt;Next is the effects module.  Two channels can be used in stereo on certain effects (ping-pong delay, etc.) or as two separate effects.  I haven't used it to its full potential yet but it's a great addition to my rack for around $100.  Very affordable, customizable, and extensible.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;u&gt;Behringer AMP800 4-channel Headphone Amp&lt;/u&gt;&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;a href="http://justin.berke.googlepages.com/behringerAMP800.jpg" target="_pic" title="Behringer AMP800"&gt;&lt;img border="0" height="53" src="https://sites.google.com/site/justinberke2/behringerAMP800.jpg" width="210" /&gt;&lt;/a&gt;&lt;/center&gt;&lt;br /&gt;This is a nice little tool that splits left and right outputs from the mixer into four separate headphone channels; all of which have their own level and balance controls.  This is very neccessary for collaborative work, or if another pair of ears wants to listen in on the mix.  Again, cheap and effective.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;u&gt;Furman RR-15x - Power Conditioner&lt;/u&gt;&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;a href="http://justin.berke.googlepages.com/furmanRR-15x.jpg" target="_pic" title="Furman RR-15x"&gt;&lt;img border="0" height="28" src="https://sites.google.com/site/justinberke2/furmanRR-15x.jpg" width="210" /&gt;&lt;/a&gt;&lt;/center&gt;&lt;br /&gt;Basically this is a nice rack-mounted surge protector; not much conditioning is happening.  There are 8 outlets on the back and one for easy access on the front, all controlled by the single switch on the front.  I was worried about lots of EM interference and buzz by having so many wires going on in the mixing cart (later post) however it's really not a problem.  This may or may not be to thank.  Probably not, though it absolutely keeps things tidy and simple.  I run a spooled heavy duty extension cord to an outlet from the cart.  One can find a cheaper surge protector for power management, but I'd say it's worth the extra few bucks to have it in the rack.  It looks rad and keeps clutter and the rat king of wires to a minimum.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;u&gt;Behringer V-Amp 2 Guitar Multi Effects Processor&lt;/u&gt;&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;a href="http://img3.musiciansfriend.com/dbase/pics/products/3/0/1/265301.jpg" target="_pic"&gt;&lt;img border="0" height="118" src="http://img3.musiciansfriend.com/dbase/pics/products/3/0/1/265301.jpg" width="175" /&gt;&lt;/a&gt;&lt;/center&gt;&lt;br /&gt;One more $100 effects module, but I got this one cheap from a friend.  Bad Aizzz.  There are a bunch of shitty combinations of amps and effects, but there are also lots of really decent quality sounds.  It lets you choose the amp style from (smooth blues to metal-face-murder-core), tone (Gain, Low/Mid/High EQ), and effects.  THEN you can save your combinations and quickly change between them by hand, or by the inlcuded foot switch.  Rad.  There's a easy tap tempo button to control some of the delay effects, and a pretty decent onboard tuner mode.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Con:&lt;/span&gt; There is a 1/2 second-ish gap of dead space between changing effects.&lt;br /&gt;&lt;br /&gt;That's about it for the cons.  Cheap and versitile!  Run this through some outboard reverb and layer it with some other instruments and it's a damn fine tool.&lt;br /&gt;&lt;br /&gt;Also, it seems pretty solid.  I'd recommend looking for this on Craigslist / eBay for cheap.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;u&gt;Korg mini-KP KAOSS Pad&lt;/u&gt;&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;a href="http://img3.musiciansfriend.com/dbase/pics/products/5/4/0/486540.jpg" target="_pic"&gt;&lt;img border="0" src="http://img3.musiciansfriend.com/dbase/pics/products/tn/5/4/0/486540.jpg" title="Korg mini-KP KAOSS Pad" /&gt;&lt;/a&gt;&lt;/center&gt;&lt;br /&gt;Finally stepping up to the mighty $150 range.  Totally worth the extra cash.  Again, I have not used this to its full potential.  I've barely made it through one entire round of futzing with each preset with Missy Elliot on my iPod and it has me drooling.&lt;br /&gt;&lt;br /&gt;This tiny little pad allows a user to control two effects at the same time with just the touch of a finger (or two).  Tap tempo shows the actual tempo, and the dial will let you zero in on a target if need be.  Rotate the dial to quickly change between 100 effects.&lt;br /&gt;&lt;br /&gt;Stereo RCA ins/outs, and a 1/8" "headphone" jack (which has a small volume control).  Again, rugged as hell, so look for it used.  Invest in the 4.5V power adapter.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;u&gt;M-Audio Axiom 25 USB MIDI Controller&lt;/u&gt;&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;a href="http://img3.musiciansfriend.com/dbase/pics/products/1/8/5/330185.jpg" title="M-Audio Axiom 25 USB MIDI Controller"&gt;&lt;img border="0" src="http://img3.musiciansfriend.com/dbase/pics/products/tn/1/8/5/330185.jpg" title="M-Audio Axiom 25 USB MIDI Controller" /&gt;&lt;/a&gt;&lt;/center&gt;&lt;br /&gt;From my &lt;a href="http://justinberke.blogspot.com/2009/04/m-audio-midi-controllers-and-my-rage.html"&gt;recent post&lt;/a&gt; describing how to correctly configure this thing, this keyboard turned out to be a rad little Midi controller. Right click on any control knob/slider in Fruity Loops and select "Link to controller," then move one of the controls on the keyboard.  Bam.  Done.  It'll now control any parameter you want.  Very cool.&lt;br /&gt;&lt;br /&gt;I could maybe use some more sliders, or maybe making half of the dials smooth (rather than all stepping/clicking dials), however there are additional midi controllers that can be connected via the Midi input.&lt;br /&gt;&lt;br /&gt;I suggest &lt;a href="http://www.asio4all.com/"&gt;ASIO4ALL&lt;/a&gt; if you are having latency problems (i.e obnoxious lag time between hitting a note on the keyboard and hearing the note). Look for upcoming post on Midi brika-brak&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4228793464107368822-6315251535482300785?l=justinberke.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://justinberke.blogspot.com/feeds/6315251535482300785/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4228793464107368822&amp;postID=6315251535482300785' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/6315251535482300785'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/6315251535482300785'/><link rel='alternate' type='text/html' href='http://justinberke.blogspot.com/2009/05/my-studio-hardware.html' title='My Studio Hardware'/><author><name>Justin</name><uri>http://www.blogger.com/profile/13405139779467188945</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VJ2U8mMqPfU/SoSptGXK8iI/AAAAAAAABOQ/qRpz6nqiK7k/S220/pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_VJ2U8mMqPfU/TUsD0FJZEII/AAAAAAAAB0I/S9-bi6VnMhA/s72-c/BehringerEurorackUB1202Mixer.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4228793464107368822.post-1097564324125393559</id><published>2009-05-09T23:12:00.008-04:00</published><updated>2009-05-10T04:29:21.805-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='app'/><category scheme='http://www.blogger.com/atom/ns#' term='tool'/><category scheme='http://www.blogger.com/atom/ns#' term='travel'/><category scheme='http://www.blogger.com/atom/ns#' term='facebook'/><category scheme='http://www.blogger.com/atom/ns#' term='web-tech'/><category scheme='http://www.blogger.com/atom/ns#' term='iphone'/><title type='text'>Facebook/iPhone App Idea #01 - Searchable GeoStatus</title><content type='html'>Where are you &amp;amp; what are you doing?&lt;br /&gt;&lt;br /&gt;Back in my day, Pluto was a planet, and Facebook didn't have pictures!  However, it did have one neat feature that I just remembered: one day in April/May it asked the simple question, "what are you doing this summer?"  A plurality of my friends answered, and I could compare what everyone was doing.  Let's take this a step further.&lt;br /&gt;&lt;br /&gt;My idea takes this to the next level.  Now that I'm concentrating on research this summer I will not have to attend class; which leaves me a lot more time to travel and do fun things in various cities.  My problem is that I am not sure which of my friends are also traveling, and which are stuck in town for the duration.&lt;br /&gt;&lt;br /&gt;The app will allow a user to publish where he or she is located, what they are doing, and perhaps even how available they are.  This is sort of like an extended status update (however, the "status" has recently been replaced with Twitter-like "What's on your mind" updates).&lt;br /&gt;&lt;br /&gt;Examples include:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Tallahasse / "Exam week" / Not even close to being free / 1 Week&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Tallahassee / "FINALLY FINISHED" / Hit me up; I'm passed out on the floor @ Poor Pauls / 3 days&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Melbourne / "Surfing" / Mostly Free / 1 Weekend&lt;br /&gt;&lt;/li&gt;&lt;li&gt;New York City / "Vacáish" / Open / 1 Week&lt;/li&gt;&lt;li&gt;Tallahassee / "Recovering/Work" / Mostly Busy / 2 weeks&lt;/li&gt;&lt;/ul&gt;This information will allow your friends in any given location to search and see if you are available to hang out, while enabling you to see who happens to be in the same town as you on sporadic trips home/abroad.&lt;br /&gt;&lt;br /&gt;Now to program it...  Give me a holler if you're into app development.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;See also&lt;/span&gt;: &lt;a href="http://www.facebook.com/home.php#/apps/application.php?id=2351489735&amp;amp;b&amp;amp;ref=pd_r"&gt;Where am I?&lt;/a&gt;, &lt;a href="http://www.facebook.com/apps/application.php?id=2468391821&amp;amp;b&amp;amp;ref=pd_r"&gt;Frends GPS&lt;/a&gt;, &lt;a href="http://www.google.com/mobile/default/latitude.html"&gt;Google Latitude&lt;/a&gt;, &lt;a href="http://www.stone.com/Twittelator/"&gt;Twittelator&lt;/a&gt;, &lt;a href="http://www.loopt.com/"&gt;Loopt&lt;/a&gt;, &lt;a href="http://where.com/"&gt;Where&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Addressing concerns&lt;/span&gt;: App will make use of a sophisticated "Off" / "Unpublish" button.  3 Lols to numerous comments left on Facebook app walls&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4228793464107368822-1097564324125393559?l=justinberke.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://justinberke.blogspot.com/feeds/1097564324125393559/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4228793464107368822&amp;postID=1097564324125393559' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/1097564324125393559'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/1097564324125393559'/><link rel='alternate' type='text/html' href='http://justinberke.blogspot.com/2009/05/facebookiphone-app-idea-01-searchable.html' title='Facebook/iPhone App Idea #01 - Searchable GeoStatus'/><author><name>Justin</name><uri>http://www.blogger.com/profile/13405139779467188945</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VJ2U8mMqPfU/SoSptGXK8iI/AAAAAAAABOQ/qRpz6nqiK7k/S220/pic.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4228793464107368822.post-811562944840788837</id><published>2009-04-28T10:13:00.029-04:00</published><updated>2009-12-19T03:50:00.560-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='statistics'/><category scheme='http://www.blogger.com/atom/ns#' term='interpolation'/><category scheme='http://www.blogger.com/atom/ns#' term='GIS'/><category scheme='http://www.blogger.com/atom/ns#' term='visualization'/><category scheme='http://www.blogger.com/atom/ns#' term='research'/><category scheme='http://www.blogger.com/atom/ns#' term='cartography'/><category scheme='http://www.blogger.com/atom/ns#' term='modeling'/><title type='text'>Geostatistical Modeling of Surface Water Sediment Analytes</title><content type='html'>Presented April 27th, 2009 for Advanced Quantatitave Geography, Florida State University. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;u&gt;Introduction&lt;/u&gt;&lt;/span&gt;: &lt;br /&gt;&lt;br /&gt;DEP Watershed Monitoring program holds a wealth of sampled water and sediment chemistry data.  One particular analyte, Cadmium (Cd), is a toxic metal that is found naturally in soil, however it is also a component used in automobile brake pads.  An exploratory investigation was attmempted, with the intentions of correlating lake and stream sediment-laden cadmium levels with population density. After numerous failed attempts of importing this dataset into &lt;a href="http://www.r-project.org/" target="_r"&gt;R&lt;/a&gt; and &lt;a href="http://geodacenter.asu.edu/" target="_geoda"&gt;GeoDa&lt;/a&gt;, this preliminary review of spatial autocorrelation is abandoned and alternative chosen.  The new investigation will attempt to examine the spatial distribution of cadmium levels across the state of Florida. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;u&gt;Examination&lt;/u&gt;&lt;/span&gt;: &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Plot the raw data&lt;/li&gt;&lt;li&gt;Plot the emperical variogram&lt;/li&gt;&lt;li&gt;Develop a reasonable variogram model&lt;/li&gt;&lt;li&gt;Use model together with the data to create a surface&lt;/li&gt;&lt;li&gt;Examine model diagnostics&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;u&gt;Default kriging interpolation&lt;/u&gt;&lt;/span&gt;: &lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_VJ2U8mMqPfU/SfcXshFm93I/AAAAAAAAAuE/X2lZpLRfZ9U/s1600-h/01+-+basic+kriging+model.bmp" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5329754737579849586" src="http://2.bp.blogspot.com/_VJ2U8mMqPfU/SfcXshFm93I/AAAAAAAAAuE/X2lZpLRfZ9U/s320/01+-+basic+kriging+model.bmp" style="cursor: pointer; display: block; height: 312px; margin: 0px auto 10px; text-align: center; width: 320px;" /&gt;&lt;/a&gt;&lt;span style="font-size: 78%;"&gt;[Basic kriging geostatistical interpolation]&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_VJ2U8mMqPfU/SfcYwpw0IFI/AAAAAAAAAuM/PtAyAGQSxb4/s1600-h/02+-+kriging+with+stations.bmp" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5329755908139655250" src="http://4.bp.blogspot.com/_VJ2U8mMqPfU/SfcYwpw0IFI/AAAAAAAAAuM/PtAyAGQSxb4/s320/02+-+kriging+with+stations.bmp" style="cursor: pointer; display: block; height: 312px; margin: 0px auto 10px; text-align: center; width: 320px;" /&gt;&lt;/a&gt;&lt;span style="font-size: 78%;"&gt;[Same surface with station location distribution]&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;br /&gt;This simple surface does a moderatly decent job of modeling the phosphate belt in west central Florida, extending east of Hillsborough County, as well as similar areas of phosphate mines around the big bend. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;u&gt;Check for dataset normality&lt;/u&gt;&lt;/span&gt;: &lt;br /&gt;&lt;br /&gt;The histogram shows significant skewness. Extreme outliers -- especially the single 17.2 mg/kg -- might need to be removed to observe a more appropriate distribution of analyte values across the dataset, though I'll leave it in for now &lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_VJ2U8mMqPfU/SfcgEOZ3I0I/AAAAAAAAAuU/Vb4D_REJlKk/s1600-h/03+-+histogram.bmp" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5329763940974404418" src="http://1.bp.blogspot.com/_VJ2U8mMqPfU/SfcgEOZ3I0I/AAAAAAAAAuU/Vb4D_REJlKk/s320/03+-+histogram.bmp" style="cursor: pointer; display: block; height: 188px; margin: 0px auto 10px; text-align: center; width: 320px;" /&gt;&lt;/a&gt;&lt;span style="font-size: 78%;"&gt;[Histogram shows significant skewness]&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;The QQPlot further suggests normality is highly suspect.  Large portions of the dataset deviate from the mean; low values in particular. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_VJ2U8mMqPfU/SfckypNoYdI/AAAAAAAAAuc/O2-_YCnNg5g/s1600-h/04+-+qqplot.bmp" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5329769136491356626" src="http://4.bp.blogspot.com/_VJ2U8mMqPfU/SfckypNoYdI/AAAAAAAAAuc/O2-_YCnNg5g/s320/04+-+qqplot.bmp" style="cursor: pointer; display: block; height: 172px; margin: 0px auto 10px; text-align: center; width: 320px;" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;A log transformation is applied to restore normality.  Box-Cox transformation provides little variation to the original dataset. &lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-style: italic;"&gt;Y(s) = log(Z(s))&lt;/span&gt; for &lt;span style="font-style: italic;"&gt;Z(s) ≥ 0&lt;/span&gt; &lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_VJ2U8mMqPfU/SfcmJbKRUDI/AAAAAAAAAuk/lK-kiw9PqWQ/s1600-h/05+-+qqplot+log+transformation.bmp" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5329770627367784498" src="http://4.bp.blogspot.com/_VJ2U8mMqPfU/SfcmJbKRUDI/AAAAAAAAAuk/lK-kiw9PqWQ/s320/05+-+qqplot+log+transformation.bmp" style="cursor: pointer; display: block; height: 172px; margin: 0px auto 10px; text-align: center; width: 320px;" /&gt;&lt;/a&gt;&lt;span style="font-size: 78%;"&gt;[Log transformation successful in minimizing distance and variation about the mean] &lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;u&gt;Examine spatial distribution of exceedance values&lt;/u&gt;:&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_VJ2U8mMqPfU/Sfcng2Xh6YI/AAAAAAAAAus/pVOULB2L1sE/s1600-h/06+-+exceedance+distribution.bmp" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5329772129319774594" src="http://2.bp.blogspot.com/_VJ2U8mMqPfU/Sfcng2Xh6YI/AAAAAAAAAus/pVOULB2L1sE/s320/06+-+exceedance+distribution.bmp" style="cursor: pointer; display: block; height: 230px; margin: 0px auto 10px; text-align: center; width: 320px;" /&gt;&lt;/a&gt;&lt;span style="font-size: 78%;"&gt;[Phosphate belt modeled from adjacent large values]&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;u&gt;Explore trend&lt;/u&gt;&lt;/span&gt;: &lt;br /&gt;&lt;br /&gt;Very slight upside down U-shaped trend in east-west direction, and  a slightly decreasing planar north-south trend.  This is attributed to the unique shape of Florida (as opposed to a more positively correlated distribution possibility in Colorado for instance). &lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_VJ2U8mMqPfU/Sf9acIvm9pI/AAAAAAAAAu0/VN7AcO6fdsU/s1600-h/07+-+trend.bmp" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5332079923259963026" src="http://4.bp.blogspot.com/_VJ2U8mMqPfU/Sf9acIvm9pI/AAAAAAAAAu0/VN7AcO6fdsU/s320/07+-+trend.bmp" style="cursor: pointer; display: block; height: 198px; margin: 0px auto 10px; text-align: center; width: 320px;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size: 78%;"&gt;[Occurrences of values across Florida]&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_VJ2U8mMqPfU/Sf9amwTCgrI/AAAAAAAAAu8/DivrCDapze8/s1600-h/08+-+trend.bmp" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5332080105676243634" src="http://3.bp.blogspot.com/_VJ2U8mMqPfU/Sf9amwTCgrI/AAAAAAAAAu8/DivrCDapze8/s320/08+-+trend.bmp" style="cursor: pointer; display: block; height: 212px; margin: 0px auto 10px; text-align: center; width: 320px;" /&gt;&lt;/a&gt;&lt;span style="font-size: 78%;"&gt;[Alternative view]&lt;/span&gt; &lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;u&gt;Examine spatial autocorrelation&lt;/u&gt;:&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_VJ2U8mMqPfU/SgChuBunrjI/AAAAAAAAAvE/pgdnTt8XAsY/s1600-h/09+-+Semivariogram.bmp" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5332439770916695602" src="http://2.bp.blogspot.com/_VJ2U8mMqPfU/SgChuBunrjI/AAAAAAAAAvE/pgdnTt8XAsY/s320/09+-+Semivariogram.bmp" style="cursor: pointer; display: block; height: 217px; margin: 0px auto 10px; text-align: center; width: 320px;" /&gt;&lt;/a&gt;&lt;span style="font-size: 78%;"&gt;[Semivariogram of the cadmium dataset]&lt;/span&gt; &lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Semivariogram cloud: &lt;br /&gt;&lt;ul&gt;&lt;li&gt;x-axis = lad distance (distance separating each pair)&lt;/li&gt;&lt;li&gt;y-axis = difference&lt;style&gt; .O  {font-size:149%;} &lt;/style&gt;&lt;style media="print"&gt; &lt;!--.sld  {left:0px !important;  width:6.0in !important;  height:4.5in !important;  font-size:103% !important;} --&gt; &lt;/style&gt;&lt;o:shapelayout ext="edit"&gt;&lt;/o:shapelayout&gt;&lt;o:idmap data="1" ext="edit"&gt;&lt;/o:idmap&gt;&lt;p:colorscheme colors="#ffffff,#000000,#808080,#000000,#bbe0e3,#333399,#009999,#99cc00"&gt;²    &lt;/p:colorscheme&gt;between the values of each pair of locations&lt;/li&gt;&lt;/ul&gt;- Low lag distance / high variogram value map imply inaccurate data &lt;br /&gt;- Closer locations should be similar &lt;br /&gt;- Distance between location pairs should increase with semivariogram values &lt;br /&gt;- Cloud should flatten out after certain distance; indicates that a relationship between pairs of locations is no longer correlated &lt;br /&gt;- This model experiences significant flattening and inaccuracy; could be alleviated with the removal of the 17.2 outlier &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;u&gt;Remove Trend&lt;/u&gt;&lt;/span&gt;: &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Use a second order log transformation to remove trend in the northwest-to-southeast direction&lt;/li&gt;&lt;li&gt;Use anisotropy to assist in removing directional components to spatial autocorrelation: the variogram increases more gradually and flattens out &lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_VJ2U8mMqPfU/SgCtzW4cxyI/AAAAAAAAAvM/MGqS9Siapyo/s1600-h/10+-+remove+trend.bmp" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5332453056633947938" src="http://4.bp.blogspot.com/_VJ2U8mMqPfU/SgCtzW4cxyI/AAAAAAAAAvM/MGqS9Siapyo/s320/10+-+remove+trend.bmp" style="cursor: pointer; display: block; height: 246px; margin: 0px auto 10px; text-align: center; width: 320px;" /&gt;&lt;/a&gt;&lt;span style="font-size: 78%;"&gt;[Values are attempted to be kept close to the mean]&lt;/span&gt;&lt;span style="font-size: 100%;"&gt; &lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;u&gt;Cross validation&lt;/u&gt;&lt;/span&gt;: Assess the model's performance &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Mean: Close to 0&lt;/li&gt;&lt;li&gt;RMSE / Average Standard Error: as small as possible&lt;/li&gt;&lt;li&gt;RMS Standardized Error: Close to 1&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_VJ2U8mMqPfU/SgCuwUbIhII/AAAAAAAAAvU/u0VY6XDDT2I/s1600-h/11+-+cross+validation.bmp" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5332454103946134658" src="http://4.bp.blogspot.com/_VJ2U8mMqPfU/SgCuwUbIhII/AAAAAAAAAvU/u0VY6XDDT2I/s320/11+-+cross+validation.bmp" style="cursor: pointer; display: block; height: 246px; margin: 0px auto 10px; text-align: center; width: 320px;" /&gt;&lt;/a&gt;&lt;span style="font-size: 78%;"&gt;[Measuring model's performace] &lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;The 17.2 outlier increases difficulty in judging lower values distribution about the mean, however the lower values are a decent fit. &lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;u&gt;Results&lt;/u&gt;&lt;/span&gt;: &lt;br /&gt;&lt;br /&gt;Compare cross validation between the original, and fitted model.  The map below is then clipped to the state of Florida. &lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_VJ2U8mMqPfU/SgCwdcSN4OI/AAAAAAAAAvc/FVLdwwyQN6k/s1600-h/11+-+final.bmp" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5332455978661961954" src="http://1.bp.blogspot.com/_VJ2U8mMqPfU/SgCwdcSN4OI/AAAAAAAAAvc/FVLdwwyQN6k/s320/11+-+final.bmp" style="cursor: pointer; display: block; height: 237px; margin: 0px auto 10px; text-align: center; width: 320px;" /&gt;&lt;/a&gt;&lt;span style="font-size: 78%;"&gt;[Cross validation comparison and final interpolated surface] &lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;The fitted model is somewhat more accurate, however this dataset is modeled fairly well with default parameters.  This is not the case for other datasets, however.  This technique can significantly improve the interpolation of information across space by removing trend, fitting an appropriate model, and finally creating a more reasonable and accurate surface. &lt;br /&gt;&lt;br /&gt;Although the levels of cadmium are largely localized, and variable across space, these methods successfully model two important areas of high concentrations of such minerals: the phosphate belt east of Hillsborough county, as well as another region of concentrated mining operations to the north - in the big bend region.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4228793464107368822-811562944840788837?l=justinberke.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://justinberke.blogspot.com/feeds/811562944840788837/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4228793464107368822&amp;postID=811562944840788837' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/811562944840788837'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/811562944840788837'/><link rel='alternate' type='text/html' href='http://justinberke.blogspot.com/2009/04/geostatistical-modeling-of-surface.html' title='Geostatistical Modeling of Surface Water Sediment Analytes'/><author><name>Justin</name><uri>http://www.blogger.com/profile/13405139779467188945</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VJ2U8mMqPfU/SoSptGXK8iI/AAAAAAAABOQ/qRpz6nqiK7k/S220/pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_VJ2U8mMqPfU/SfcXshFm93I/AAAAAAAAAuE/X2lZpLRfZ9U/s72-c/01+-+basic+kriging+model.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4228793464107368822.post-1644485144111218040</id><published>2009-04-20T14:17:00.027-04:00</published><updated>2009-04-20T17:24:01.344-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GIS'/><category scheme='http://www.blogger.com/atom/ns#' term='visualization'/><category scheme='http://www.blogger.com/atom/ns#' term='cartography'/><title type='text'>Hyperlinking in ArcGIS 9.2 Via Attribute/Field</title><content type='html'>&lt;span style="font-weight: bold;font-family:georgia;font-size:180%;"  &gt;&lt;u&gt;Initial Setup&lt;/u&gt;:&lt;/span&gt;&lt;br /&gt;&lt;ul style="font-family: georgia;"&gt;&lt;li&gt;The hyperlink tool is found on the standard Tools toolbar.  The icon turns into a yellow lightning bolt when hyperlinked information is available.  Otherwise the icon will be grayed out.&lt;/li&gt;&lt;/ul&gt;&lt;center&gt;&lt;img src="http://4.bp.blogspot.com/_VJ2U8mMqPfU/SezOtvV7E_I/AAAAAAAAAs8/m7BbRznAK-M/s400/01+-+hl+icon+on+toolbar.gif" border="0" /&gt;&lt;/center&gt;&lt;ul&gt;&lt;li&gt;Open the Attribute table and create a new field that will be used to store the path/url/location of the hyperlinked media (i.e. "C:\images\001.jpg," "http://www.flickr.com/jpg/001.jpg," etc.)&lt;br /&gt;&lt;blockquote  style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;Name: "Link"&lt;br /&gt;Type: Text / String&lt;br /&gt;Length: 100 characters should be suitable&lt;/span&gt;&lt;/blockquote&gt;&lt;center&gt;&lt;img src="http://2.bp.blogspot.com/_VJ2U8mMqPfU/SezR9Dv7OsI/AAAAAAAAAtE/2jyZLGu-Whg/s400/02+-+add+field.gif" border="0" /&gt;&lt;/center&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Context click (right click) on this layer in the table of contents pane and choose Properties&lt;/li&gt;&lt;li&gt;Choose the Display tab&lt;/li&gt;&lt;li&gt;Check "Support &lt;u&gt;H&lt;/u&gt;yperlinks using field"&lt;br /&gt;- Choose Document for images stored on the hard drive&lt;br /&gt;- Choose URL for web-based images&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;a href="http://3.bp.blogspot.com/_VJ2U8mMqPfU/SezUlf2PTyI/AAAAAAAAAtM/Ifo9OxFmO8Q/s1600-h/03+-+layer+properties.gif" target="_properties" title="[Click to enlarge]"&gt;&lt;img src="http://3.bp.blogspot.com/_VJ2U8mMqPfU/SezUlf2PTyI/AAAAAAAAAtM/Ifo9OxFmO8Q/s320/03+-+layer+properties.gif" border="0" /&gt;&lt;/a&gt;&lt;/center&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Locations with an associated hyperlink will turn blue when the hyperlink tool is selected.  Loctaions without a hyperlink will remain rendered with their predefined symbology.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;a href="http://1.bp.blogspot.com/_VJ2U8mMqPfU/SezX3BhSiDI/AAAAAAAAAtU/7YDAXycLVVU/s1600-h/04+-+layout.gif" target="_layer" title="[Click to enlarge]"&gt;&lt;img src="http://1.bp.blogspot.com/_VJ2U8mMqPfU/SezX3BhSiDI/AAAAAAAAAtU/7YDAXycLVVU/s320/04+-+layout.gif" border="0" /&gt;&lt;/a&gt;&lt;/center&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;The cursor will turn into an empty lightning bolt when this tool is selected:&lt;br /&gt;&lt;img src="http://3.bp.blogspot.com/_VJ2U8mMqPfU/SeziKRdDgoI/AAAAAAAAAtk/fnvxWiLUWDI/s400/06+-+icon+empty.gif" border="0" /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;When hovering over a hyperlinked point, the cursor will become filled:&lt;br /&gt;&lt;img src="http://4.bp.blogspot.com/_VJ2U8mMqPfU/SezieiB_I-I/AAAAAAAAAts/S-kb_AN8Em8/s400/07+-+icon+filled.gif" border="0" /&gt;&lt;/li&gt;&lt;li&gt;Simply click on a location to open the image in Internet Explorer, Mozilla Firefox, or Windows Picture and Fax Viewer.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:georgia;font-size:180%;"  &gt;&lt;u&gt;Simplify Hyperlink Launching&lt;/u&gt;:&lt;/span&gt;&lt;br /&gt;&lt;ul style="font-family: georgia;"&gt;&lt;li&gt;In the ArcMap Selection menu, choose Options to bring up Selection Options&lt;/li&gt;&lt;li&gt;Raise the &lt;u&gt;S&lt;/u&gt;election tolerance to 10 pixels or above to simply selection; otherwise it can be difficult to launch a hyperlink when using a very small (2 pixel) tolerance&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;a href="http://3.bp.blogspot.com/_VJ2U8mMqPfU/SezcGma2nOI/AAAAAAAAAtc/-aH7jpDLORI/s1600-h/05+-+selection+options.gif" target="_options" title="[Click to enlarge]"&gt;&lt;img src="http://3.bp.blogspot.com/_VJ2U8mMqPfU/SezcGma2nOI/AAAAAAAAAtc/-aH7jpDLORI/s400/05+-+selection+options.gif" border="0" /&gt;&lt;/a&gt;&lt;/center&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size:180%;"&gt;&lt;u  style="font-family:georgia;"&gt;&lt;span style="font-weight: bold;"&gt;Data Management&lt;/span&gt;&lt;/u&gt;&lt;/span&gt;&lt;span style="font-weight: bold;font-family:georgia;font-size:130%;"  &gt;&lt;span style="font-size:180%;"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;ul style="font-family: georgia;"&gt;&lt;li&gt;When collecting in situ data, it may help to simply save the image name to a separate text field ("001" rather than "001.jpg: or "C:\...\001.jpg")&lt;/li&gt;&lt;li&gt;Use Field Calculator to populate the full path to the location of the image using a similar statement:&lt;br /&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;"C:\Images\" &amp;amp; [FIELD_ID] &amp;amp; ".jpg"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;a href="http://3.bp.blogspot.com/_VJ2U8mMqPfU/SezkcM84yiI/AAAAAAAAAt0/KOiQwPbR6xs/s1600-h/08+-+field+calculator.gif" target="_calc" title="[Click to enlarge]"&gt;&lt;img src="http://3.bp.blogspot.com/_VJ2U8mMqPfU/SezkcM84yiI/AAAAAAAAAt0/KOiQwPbR6xs/s320/08+-+field+calculator.gif" border="0" /&gt;&lt;/a&gt;&lt;/center&gt;&lt;br /&gt;&lt;center&gt;&lt;a href="http://3.bp.blogspot.com/_VJ2U8mMqPfU/Sezlbyn5NsI/AAAAAAAAAt8/YF9ABzGMyyI/s1600-h/09+-+table.gif" target="_table" title="[Click to enlarge]"&gt;&lt;img src="http://3.bp.blogspot.com/_VJ2U8mMqPfU/Sezlbyn5NsI/AAAAAAAAAt8/YF9ABzGMyyI/s320/09+-+table.gif" border="0" /&gt;&lt;/a&gt;&lt;/center&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4228793464107368822-1644485144111218040?l=justinberke.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://justinberke.blogspot.com/feeds/1644485144111218040/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4228793464107368822&amp;postID=1644485144111218040' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/1644485144111218040'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/1644485144111218040'/><link rel='alternate' type='text/html' href='http://justinberke.blogspot.com/2009/04/hyperlinking-in-arcgis-92-via.html' title='Hyperlinking in ArcGIS 9.2 Via Attribute/Field'/><author><name>Justin</name><uri>http://www.blogger.com/profile/13405139779467188945</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VJ2U8mMqPfU/SoSptGXK8iI/AAAAAAAABOQ/qRpz6nqiK7k/S220/pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_VJ2U8mMqPfU/SezOtvV7E_I/AAAAAAAAAs8/m7BbRznAK-M/s72-c/01+-+hl+icon+on+toolbar.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4228793464107368822.post-2046989556117550726</id><published>2009-04-19T02:45:00.008-04:00</published><updated>2009-04-19T17:43:17.725-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='music production'/><category scheme='http://www.blogger.com/atom/ns#' term='hardware'/><title type='text'>M-Audio midi controllers and my rage</title><content type='html'>I'd say recently, but that's just not true.  A few months ago I picked up my second M-Audio midi controller.  Round one was the Oxygen 49 several years ago.  I was familiar with the very strict rule of "thou shalt installith &lt;span style="font-weight: bold;"&gt;ALL&lt;/span&gt; software/drivers before thine plugs hardware into ones computering machine," and was very careful to follow all directions thoroughly and to the letter.  Still, something happened and Lappy Tappy would not recognize any signals.  Back it went.&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;a href="http://keyboards-midi.musiciansfriend.com/product/MAudio-Oxygen49-49key-Mobile-USB-Controller?sku=706311" title="M-Audio Oxygen 49 MIDI/USB controller"&gt;&lt;img src="http://img3.musiciansfriend.com/dbase/pics/products/tn/1/7/9/330179.jpg" border="0" /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;[M-Audio Oxygen 49]&lt;/span&gt;&lt;br /&gt;&lt;/a&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;As a side note, I work in a pretty techy sort of industry.  For a period of time I was installing and managing &lt;a href="http://www.dep.state.fl.us/water/storet/"&gt;advanced relational database systems&lt;/a&gt; with no problem.  I know how to perform geographically weighted regression, use agent based modeling to predict land use change; however, I cannot get a simple USB device to work properly.  I can't imagine why Alesis, M-Audio, etc. all continue to provide such shitty, fakucta, and just terrible software support for great pieces of hardware.&lt;br /&gt;&lt;br /&gt;Anyway, I picked up my second M-Audio device: the Axiom 25.  I figured that it was different enough from the Oxygen so that any remaining drivers/keys left in my registry would not interfere with the operation of this.  (Also, these companies are terrible about leaving their grubby &lt;a href="http://www.flickr.com/photos/71952913@N00/373671461"&gt;cheeto hands&lt;/a&gt; all over my computer.  An uninstall should NOT leave registry keys for me to trip over later)&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;a href="http://keyboards-midi.musiciansfriend.com/product/MAudio-Axiom-25-25Key-USB-MIDI-Controller?sku=706313" target="_axiom" title="M-Audio Axiom 25 midi controller"&gt;&lt;img src="http://img3.musiciansfriend.com/dbase/pics/products/tn/1/8/5/330185.jpg" border="0" /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;[M-Audio Axiom 25]&lt;/span&gt;&lt;/a&gt;&lt;/center&gt;&lt;br /&gt;Of course a fresh install of the most recent drivers, downloaded directly from the M-Audio site did not work.  I set this rather rad looking unit to the side and concentrated on school like a good kid.&lt;br /&gt;&lt;br /&gt;The problem is that after installing the keyboard, Windows claims that "New hardware is ready to use."  Subsequent connections, however claim that a "New" audio device is found.  This shouldn't be new...&lt;br /&gt;&lt;br /&gt;Also, Fruity Loops, Acid, Reason, Ableton, &lt;a href="http://www.midiox.com/"&gt;Midi-Ox&lt;/a&gt;, etc. do not recognize any input device as being present.  Here's the trick:&lt;br /&gt;&lt;br /&gt;&lt;hr width="80%"&gt;&lt;ul&gt;&lt;li&gt;Install the updated drivers from the &lt;a href="http://www.m-audio.com/index.php?do=support&amp;amp;tab=driver&amp;amp;PID=d080fc27596dbb53f422a1b56ccbe28c&amp;amp;serie_ID=3#tabs"&gt;M-Audio web site&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Plug in and turn on the keyboard&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Open the Device Manager&lt;br /&gt;- Right click on My Computer and choose Properties&lt;br /&gt;- Choose the Hardware tab&lt;br /&gt;- Click the Device Manager button&lt;/li&gt;&lt;li&gt;Expand "Sound, video and game controllers"&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Right click on the generic USB Audio Device, and choose Properties&lt;/li&gt;&lt;li&gt;Select the Driver tab&lt;/li&gt;&lt;li&gt;Click Update Driver&lt;/li&gt;&lt;li&gt;Choose "No, not at this time" to let Windows fix it and click Next&lt;/li&gt;&lt;li&gt;Choose "Install from a list or specific location" and click Next&lt;/li&gt;&lt;li&gt;Choose "Don't Search.  I will choose the driver to install." and click Next&lt;/li&gt;&lt;li&gt;A) In the Model box, choose "Axiom 25 USB" Driver if it is available&lt;/li&gt;&lt;li&gt;B) Choose "Have Disk"&lt;br /&gt;- Choose Browse&lt;br /&gt;- Navigate to the location of the downloaded driver, i.e. C:\Program Files\M-Audio\M-Audio Series II MIDI&lt;/li&gt;&lt;li&gt;A second driver should attempt to update itself.  Repeat the previous few steps for the "Axiom 25 USB &lt;u&gt;MIDI&lt;/u&gt; Driver" as well.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;This worked for me.  The device appeared in all MIDI controlling software packages.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;Thanks to rorschach76 @ &lt;a href="http://forums.m-audio.com/showthread.php?t=334"&gt;http://forums.m-audio.com/showthread.php?t=334&lt;/a&gt; for the method&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4228793464107368822-2046989556117550726?l=justinberke.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://justinberke.blogspot.com/feeds/2046989556117550726/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4228793464107368822&amp;postID=2046989556117550726' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/2046989556117550726'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/2046989556117550726'/><link rel='alternate' type='text/html' href='http://justinberke.blogspot.com/2009/04/m-audio-midi-controllers-and-my-rage.html' title='M-Audio midi controllers and my rage'/><author><name>Justin</name><uri>http://www.blogger.com/profile/13405139779467188945</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VJ2U8mMqPfU/SoSptGXK8iI/AAAAAAAABOQ/qRpz6nqiK7k/S220/pic.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4228793464107368822.post-3671916087499664417</id><published>2009-04-18T13:55:00.008-04:00</published><updated>2009-05-06T14:37:09.349-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GIS'/><category scheme='http://www.blogger.com/atom/ns#' term='web-tech'/><category scheme='http://www.blogger.com/atom/ns#' term='Remote Sensing'/><category scheme='http://www.blogger.com/atom/ns#' term='imagery'/><title type='text'>Working with .tar files and imagery</title><content type='html'>When downloading imagery (Landsat, IKONOS, ASTER, SRTM, etc) I continually encounter the .tar extension/format of compressed datasets.  7-zip is a great (light and free) package to use.&lt;br /&gt;&lt;table align="left" border="0" width="110"&gt;&lt;br /&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td align="center"&gt;&lt;a href="http://www.7-zip.org/" target="_7-zip"&gt;&lt;img src="http://www.7-zip.org/7ziplogo.png" border="0" /&gt;&lt;br /&gt;7-zip.org&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Select all .tar files in the directory to be extracted, right click, and choose "Extract Here" from the 7-Zip menu:&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;a href="http://2.bp.blogspot.com/_VJ2U8mMqPfU/SeoefgvbmKI/AAAAAAAAAsk/_rhBl8T-0q0/s1600-h/7-zip.bmp" target="_sh"&gt;&lt;img src="http://2.bp.blogspot.com/_VJ2U8mMqPfU/SeoefgvbmKI/AAAAAAAAAsk/_rhBl8T-0q0/s200/7-zip.bmp" border="0" /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;[Click to enlarge]&lt;/span&gt;&lt;/a&gt;&lt;/center&gt;&lt;br /&gt;&lt;br /&gt;Newer versions of WinZip have .tar support as well, though this utility is pretty quick and efficient.&lt;br /&gt;&lt;br /&gt;&lt;hr width="80%"&gt;&lt;br /&gt;&lt;br /&gt;These are a few of the resources I have been using to obtain remote sensing imagery:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-weight: bold;"&gt;Global Land Cover Facility &lt;/span&gt;(Free)&lt;br /&gt;&lt;a href="http://glcf.umiacs.umd.edu/data"&gt;http://glcf.umiacs.umd.edu/data&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;USGS Landsat Web Site &lt;/span&gt;(Free now)&lt;br /&gt;&lt;a href="http://landsat.usgs.gov/"&gt;http://landsat.usgs.gov&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;NASA Earth Sci Grad Student Fellowship Program for RS&lt;/span&gt;&lt;br /&gt;&lt;a href="http://nspires.nasaprs.com/"&gt;http://nspires.nasaprs.com&lt;/a&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4228793464107368822-3671916087499664417?l=justinberke.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://justinberke.blogspot.com/feeds/3671916087499664417/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4228793464107368822&amp;postID=3671916087499664417' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/3671916087499664417'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4228793464107368822/posts/default/3671916087499664417'/><link rel='alternate' type='text/html' href='http://justinberke.blogspot.com/2009/04/working-with-tar-files-imagery.html' title='Working with .tar files and imagery'/><author><name>Justin</name><uri>http://www.blogger.com/profile/13405139779467188945</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_VJ2U8mMqPfU/SoSptGXK8iI/AAAAAAAABOQ/qRpz6nqiK7k/S220/pic.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_VJ2U8mMqPfU/SeoefgvbmKI/AAAAAAAAAsk/_rhBl8T-0q0/s72-c/7-zip.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4228793464107368822.post-3557909900283741073</id><published>2009-04-01T00:33:00.002-04:00</published><updated>2009-07-09T22:31:02.115-04:00</updated><title type='text'>Campus Golf</title><content type='html'>&lt;center&gt;&lt;iframe marginheight="0" marginwidth="0" src="http://maps.google.com/maps/ms?ie=UTF8&amp;amp;hl=en&amp;amp;msa=0&amp;amp;msid=108648148073683257719.00046656d4eaecd1c60a7&amp;amp;ll=30.441644,-84.298868&amp;amp;spn=0.01184,0.018454&amp;amp;z=15&amp;amp;output=embed" scrolling="no" width="430" frameborder="0" height="320"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;a href="http://maps.google.com/maps/ms?ie=UTF8&amp;amp;hl=en&amp;amp;msa=0&amp;amp;msid=108648148073683257719.00046656d4eaecd1c60a7&amp;amp;ll=30.441644,-84.298868&amp;amp;spn=0.01184,0.018454&amp;amp;z=15&amp;amp;source=embed" style="color: rgb(0, 0, 255); text-align: center;"&gt;View Larger Map&lt;/a&gt;&lt;/span&gt;&lt;/center&gt;&lt;br /&gt;&lt;hr style="color: rgb(96, 153, 96);" width="80%"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Rules:&lt;/span&gt;&lt;span class="ms" jstcache="51" jsdisplay="!$this.errMsg || $this.missingPrefs" jseval="insertModContent(this,$this);" jsskip="1"&gt;&lt;br /&gt;Paved/concrete/brick surfaces are treated as an out-of-bounds hazard; the ball should be moved to the grass for the next shot.  No shot may be taken from paved surfaces.  Don't ruin the nice brick walkways&lt;br /&gt;&lt;br /&gt;Mulch, pine needles, short shrub/bushes, and flower beds  are out of bounds.  The ball must be dropped in closest grass area.  Do not take a shot from these areas either&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="ms" jstcache="51" jsdisplay="!$this.errMsg || $this.missingPrefs" jseval="insertModContent(this,$this);" jsskip="1"&gt;Cover your divots&lt;/span&gt;&lt;br /&gt;&lt;span class="ms" jstcache="51" jsdisplay="!$this.errMsg || $this.missingPrefs" jseval="insertModContent(this,$this);" jsskip="1"&gt;&lt;br /&gt;Free drops if shot is too close or blocked by bushes/walls/etc&lt;br /&gt;&lt;br /&gt;People listening to pods or riding bikes or skate boards are hole-ending hazards&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.
