Sunday, April 13, 2014

The Masters - Round 4 Hole Locations Interactive Map

Just added the round 4 pin placements for The Master course map.
Interactive Map:

Friday, April 11, 2014

Day 2 Pin Placements on the Golf Course Mapper - The Masters 2014

Just added the day 2 pin placements to The Master course map.
Interactive Map:

Saturday, March 22, 2014

Augusta National - The Masters on Bing Maps (

Yardage and Green Details on Bing Maps

At the time of this writing golf season is under way in some parts of the Country and the first major of the year is just a few short weeks away.  I found some time to re-visit the Golf Course Mapper I put together last year. As usual I will be embedding a demo but I'd recommend going to the site hosting the mapper to get a better idea and a bigger map. Visit the site at Golf Course Mapper.

The biggest enhancement over the last golf course mapped is that I spent a reasonable amount of time creating the map.  The previous version used a map that I created in mere minutes...and looked like it.  Other enhancements include a new hole data display control and better navigation control.  This version works better with tablets and mobile devices, though a true mobile version is still in the works.

Screenshots below the demo (More screenshots at Golf Course Mapper - Augusta National ).

The demo:

Augusta National - The Masters

No. 1 Tea Olive

No. 2 Pink Dogwood

Pink Dogwood Green Detail

No. 3 Flowering Peach in aerial view mode.

No. 5 Magnolia

No. 9 Carolina Cherry - Having the green detail for this hole prior to hitting your approach can save strokes. 

No. 9 Carolina Cherry in a mixed view.  You can see both the green detail and the aerial image.

No. 12 Golden Bell

No. 13 Azalea

No. 13 Azalea - Note the distance markers have been aligned wit the upcoming shot angle providing accurate distance information.  Hard to do with a paper yardage book.

No. 16 Redbud - Excellent detail to help plan your next shot.

No. 18 Holly

No. 18 Holly - Again, having the green detail can save you strokes.  Looking at the map you can see that you need to get on and hold the back tier.  Whether it is your first time on this course or you been around a few turns this detail is a stroke saver.

Sunday, October 20, 2013

Golf Course Mapper .Com...10 Years in the Making

GolfCourseMapper.Com Live Demonstration!
Read more about why this was 10 years in the making below the demo.
*** Update: New course coming soon and many changes to the UI.  Preview below.***

Okay, you're right that didn't take 10 years to create.  In fact with my SharePoint Bing Mapper platform in only took a couple of days to put that prototype together.

So what did I mean about 10 years in the making?  Roughly 10 years ago I decided I was going to build an application for mapping golf courses (Golf Buddy was what I wanted to call it).  I bought a Dell Axiom and a Bluetooth GPS device and got to work investigating.

All I needed to get the application running was going to be:

  1. A way to map the course.  I think the little known fact that I have a pilots license was inspiring this (and other application ideas).  I was eager to fly over golf courses and use LIDAR (or whatever it was called) to get the accuracy down to the millimenter
  2. An application that could have a moving map interface that would sync with the bluetooth GPS device.
  3. People to buy handheld devices to run the application on.  Folks, the handhelds had no sexy back then, zero, zilch.  I was even a bit nervous to let people see me with my geek kit, friends snickered.  
  4. And of course it would have been helpful to have a unified platform to make distribution of the application a reasonable endeavor.
BOOM!  It didn't take me long to realize that as an independent developer I would dies a slow and painful death if I stumbled down that path.  In fact I only wrote a few applications for the Axiom before deciding to seek shelter in paying work.  My favorite application that I created for the Axiom used the touchscreen to interact with Microsoft Flight but not too useful or marketable.

Fast forward 10 years...

What happened to the challenges?
  1. Bing Maps has mapped golf courses down to small details, accurate enough to be adequate for a golf course mapping application.
  2. HTML5 allows the use of a get location function that in some cases can be pretty accurate when couple with as device that has GPS.
  3. Handheld devices got sexy and widely accepted.
  4. The latest web standards and browsers allow delivery of a quality application through the web browser and across platforms.
  5. And on my side, the SharePoint Bing Mapper application I use to develop mapping solutions makes creating a mapping based application quick and completely pain free ;) (please pardon the slight exaggeration). 
So there you have it, another live demonstration to kick the tires and play around with.  Warning: it is a prototype and not yet mobile enabled but still you can have some fun with it.


Sunday, June 9, 2013

Mapping a Business on Bing Maps - IT Asset Mapping

Mapping a Business on the SharePoint Bing Mapper

IT assets mapped on the SharePoint
 Bing Mapper.

In this post we will be looking at mapping business assets on Bing Maps using the SharePoint Bing Mapper. This blog post will be building on the previous post, Mapping a Business on Bing Maps - Employee Mapping.  I will cover a few basics about using the tool and of course include a live demo.

Hopefully as I go through some of these features it will help spark ideas about how the mapper can help with business location information.  So far we have mapped the physical structure (the campus and the buildings), assigned employees to cubicals,  offices and work areas.  In this post we will be adding IT equipment to our map.  One point I want to stress is that the mapper has flexible data capabilities.  We could be adding power outlet locations, vending equipment or any other data to the map without ever going back to a developer.  

For this post I have added desktop computers and phone sets to the 2nd floor of building 1.  The same as with showing a person on the map, you can hover over the item to view the name and click it to get the detailed description.  Take a look at the included images to see how filtered views can be presented (for example, you might want to view only desktop computers over 3 years old).  And yes, you could use the mapped items to assign work orders (that would be slightly past out of the box capabilities but would by a fairly easy extension).  

Live demo of a filtered view showing phone systems at their installed location:

I have created a fairly simple demo, the detail popup as well as the Phone Systems table can be modified to include any desired data.

Here are a few more screenshots illustrating the features presented:
All persons and assets are
showing in this view.

A filtered view of IT assets showing
desktop computers.

A filtered view of IT assets showing
phone systems.


Adding a phone system to a IT
asset tracking list on the
SharePoint Bing Mapper.

Friday, May 31, 2013

Mapping a Business on Bing Maps - Employee Mapping

Mapping a Business on the SharePoint Bing Mapper 

In this post I will be demonstrating how to map a business on Bing maps.  This post will focus on showing employees on a Bing Map using indoor mapping, thereby creating a directory of employees.  In upcoming posts I will show other views that will include creating directories of conference rooms (including scheduling), mapping IT equipment to locations, etc.. 

Indoor map of an office on Bing Maps showing employee's assigned locations.

Live Demonstration!

Navigation Tips:
  1. Use the breadcrumb to select building, switch floors, change sites and zoom to offices.
  2. Use the search box in the Employee Directory list control to filter employees by name or job title.  Just enter the first few letters to narrow results.
  3. In the Employee Directory list highlighting an employee will center them on the map.
  4. Hovering over an employee will show their name.
  5. Clicking an employee will give you a detailed information.

Pretty neat stuff.  Seams to me that any business with with more than a handful of employees could use a director system like this.  Indoor mapping used to manage employees locations!  Great additions to an intranet and a great tool for HR.

Here is a series of screen shots of how easy it is to move employees from one location to another (switch offices or desks):

Select employee with a right click, select move from action menu.

Move the cursor to the new location and double click.

Confirm that you intended to move the employee.

That's it, the employee is now in their new location, directory updated!

Thursday, April 25, 2013

Importing SharePoint List Items to a CSV File via Powershell

As a follow-up to my post titled "Exporting SharePoint List Items to a CSV File via Powershell" I am posting this script that I use for importing SharePoint ListItems via Powershell.  It works in conjunction with the exporting script.

This script borrows heavily from Brian Farnhill's  excellent post Populate a SharePoint list with items in a CSV file using PowerShell .

Key additions for the way I use it are the exclude columns array and the iterating of all lists in a web then attempting to load the list items for that list.  It accepts 2 parameters, the url of the web to import to and the path to the folder with the csv files containing the list data.

I'm sure there is room for improvement, but it does what I want.  

$web = Get-SPWeb $webUrl
write-host ("Web Title: " + $web.Title)
$arrExcludeCols = "Workflow Instance ID","Folder Child Count","Approver Comments","GUID","Modified","Modified By","Is Current Version","Edit Menu Table Start",
      "Edit","ScopeId","Level","Encoded Absolute URL","Select","Item Child Count","ProgId","Order","Workflow Version","Edit Menu Table End","Item Type",
      "Has Copy Destinations","owshiddenversion","File Name","Name","Server Relative URL","Created By","Unique Id","Sort Type","Effective Permissions Mask",
      "HTML File Type","URL Path","Copy Source","File Type","Attachments","Property Bag","ID","Type","Approval Status","Version","UI Version","Client Id",
      "Path","Created","Instance ID"
#foreach($list in $web.Lists)
for($i=0; $i -le $web.Lists.Count; $i++)
    $list = $web.Lists[$i]
    $csvPath = $csvFolderPath + '\' + $list.Title + '.csv'
    write-host ("Importing: " + $csvPath)
    try {
      $csvRow = $null
      Import-Csv $csvPath | ForEach-Object {
        $csvRow = $_
        $newItem = $list.Items.Add()
        Get-Member -InputObject $csvRow -MemberType NoteProperty | ForEach-Object {
        $property = $_.Name
        if ($arrExcludeCols -notcontains $property)
        #write-host -foregroundcolor yellow ($property + ' : ' + $csvRow.$property)
        try {
            $newItem.set_Item($property, $csvRow.$property)
        catch  [Exception]
            write-host -foregroundcolor red ($_.Exception.Message)
    catch  [Exception]
        write-host -foregroundcolor red ($_.Exception.Message)
        #write-host -foregroundcolor red ("Could not import list items.")