Mapshots inc
1 / 43

MapShots, Inc. - PowerPoint PPT Presentation

  • Uploaded on

MapShots, Inc. Small “virtual” company. Specializing in Crop Recordkeeping software Offering components for integration into corporate applications EASi Suite TM is the product marketed directly to growers and service providers. Macy’s Convoluted History. Farmed in Indiana

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
Download Presentation

PowerPoint Slideshow about ' MapShots, Inc.' - faolan

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
Mapshots inc
MapShots, Inc.

  • Small “virtual” company.

  • Specializing in Crop Recordkeeping software

  • Offering components for integration into corporate applications

  • EASi SuiteTM is the product marketed directly to growers and service providers.

Macy s convoluted history
Macy’s Convoluted History

  • Farmed in Indiana

  • Started in PA software ’92

  • Deere 40% ownership ’93

  • Developed AgLeader DLL ’94

  • Traded to Agris ’95

  • Active in A*E*A

  • AgLink for Windows ’96

  • Good AgLink ’97

  • Special Projects ’98

  • MapShots ‘99

Our Case 2670 in 1989

Company principles
Company Principles

  • Commitment to Open Data Exchange

  • Design Philosophy

    • Rate is Agronomy…

    • … Quantity is Business

  • Operational Model

    • Build it Complex…

    • … Make it Simple

Building it complex



Seed Rate





Herbicide Flow

Controllable Sections

Building it Complex…

Starter Flow

Making it simple
…Making it Simple

  • RF ID tags on product containers

  • RF ID Receivers on machine containers

  • BlueTooth flow meters

  • Load cells on bulk containers

  • Black box data logging

  • All part of the ISO 11783/CAN framework


The envelope that is defines the physical farming operation.

Supports the combination of different financial entities (father/son, etc.) that “appear” to be farming together.



Track the “associates” of a business differently for each farm.

Manage complex landlord split arrangements at each farm.

Spreadsheet entry for fast setup and maintenance.



Stay permanent over time. each farm.

FSA/Crop Insurance documentation.

Support multiple crops in a year, and different crop patterns in each year, w/o changing field definitions.


CropZones each farm.

Products each farm.

Map queries
Map Queries each farm.

Report queries
Report Queries each farm.

Advanced mapping
Advanced Mapping each farm.

Building it complex1

Tickets each farm.







Building it Complex…

Automating cotton harvest data flow
Automating Cotton Harvest Data Flow each farm.

  • Generate module identification with field devices.

  • Log modules into management system.

  • Grower notifies gin of module availability.

  • Gin notifies grower of module pickup.

  • Gin notifies grower of module ginning.

  • Gin notifies grower of bale classification

Module identification
Module Identification each farm.

  • Picker logs the path for a basket.

  • Dumps that path and picker ID into a logger on the boll buggy.

  • Boll buggy accumulates the paths from each basket that is unloaded into it.

  • Boll buggy dumps the collected paths into the module builder into which it unloads.

  • Module builder logs the module number and collected paths from each picker or buggy.

Gin notification
Gin Notification each farm.

  • Send notice to Gin of module availability

    • Optionally send “paper” map of location

    • Optionally send navigation map of location

  • Notification can be triggered by grower, or just happen automatically at a preset time each day.

  • Gin acknowledges notification

Gin progress responses
Gin Progress Responses each farm.

  • Gin sends notification of picking up the module. Includes the module weight.

    • Automatically generates estimated production

  • Gin sends notification of each gin run, including the list of modules that were included in the run.

    • Automatically adjusts actual production values

  • Gin sends classification data as it becomes available.

Pocket modules
Pocket Modules each farm.

  • Simple PDA app for logging module IDs.

  • Fat Finger Operation

  • Enhancements:

    • RFID reader for tags

    • Barcode reader

    • Wireless gin notification

    • Wireless office notification

Building it complex2

Insecticide each farm.


Seed Rate





Herbicide Flow

Controllable Sections

Building it Complex…

Starter Flow

Fieldop device drivers

Proprietary File Spec each farm.

Proprietary File Spec







Proprietary DLL

Proprietary Data


Propietary Data


Proprietary Spec



Proprietary DLL



Third-Party Application

Proprietary DLL

Proprietary Spec

Proprietary DLL

Proprietary DLL



Proprietary File Spec

Proprietary File Spec

FieldOp Device Drivers

Proprietary DLL

Standard Field



Cotman ppc
COTMAN PPC each farm.

Pocket crops tm
Pocket Crops each farm.TM

Pocket crops lite
Pocket Crops Lite each farm.

Development environment
Development Environment each farm.

  • VB6 as the primary development environment

  • A ‘C’ utility library ported from our development in the 80’s.

  • A C++ component for very fast in-memory data array access, written by Jim Wilson.

  • Third-party GIS – Totally wrapped by a single MapShots VB6 OCX’s.

  • Other third-party components, wrapped by MapShots OCX’s as much as possible.

Component architecture

Applications each farm.

EASi Suite









Component Architecture




MapShots mpsGISCC

apSIS Map Control



Cadcorp Datasets

Recordsets, Overlays



Cadcorp Features

and Transformations,

apSIS Data Capture



Surviving in vb6
Surviving in VB6 each farm.

  • Minimize dependencies on binary compatibility by:

    • Building interfaces in IDL and generating .tlb’s

    • Only allow early binding to these interfaces implemented on DLL’s.

    • Minimize OCX public functions and implement interfaces for more powerful access by clients.

    • Handle events via Callback interfaces.

Candidates for net development
Candidates for .Net Development each farm.

  • Replace our mpsNodeList architecture with a .Net solution

  • .Net implementation of our UOM system.

    • Possibly wrapped around an existing Deere implementation.

  • Replace FODM with an optimized set of FieldOp Business Objects (Binary FODM).

  • A set of Pocket PC Business objects.

Mpsnodelist features
mpsNodeList Features each farm.

  • Emulates a data source for a hierarchical spreadsheet.

  • Nodes represent rows.

  • Columns represent Columns 

  • Cells are a collection on the node and there is a cell for each column.

  • Cells have data types that can be independent of a column data type (but not usually used that way).

  • Cells or columns can be a data type of PickList, and have a property that is another mpsNodeList defining the PickList members.

  • A nodelist object can stand on its own as a powerful alternative to a collection, or it can be used as a datasource for our dropdown list control and our spreadsheet control.

Mpsnodelist in net
mpsNodeList in .Net each farm.

  • Does is make sense to use a DataSet as the internal structure of a NodeList (if not a complete replacement)?

  • Can a dataset be inherited? Or does it have to be implemented? Or would we just wrap it.

Porting uom
Porting UOM each farm.

  • Deere has a very powerful Variable Representation Number that we might consider wrapping:

    • Contains an xml-based units definition for extensibility

    • Defines the unit of a number as well as suitable alternative units and precision that is context specific.

  • There could be significant logic changes switching to Deere.

  • Our own solution is much simpler and has served us very well. It is a hardcoded enum based solution.

  • Garbage collection kills us in our VB6 implementation. 5 seconds to create 10,000 UOM objects… over a minute to destroy them.

  • An attempted C++ implementation is much faster, but only got to 95% complete. This implementation is at the very core of all that we do, and must be blazingly fast.

Current fodm

Sensor Use each farm.

Sensor Use

Sensor Use

Sensor Use

Sensor Use

Sensor Use

Sensor Use



Current FODM

Operation Region

Frequently Changing Data Object

Fcd data in net
FCD Data in .Net each farm.

  • Is an in-memory table fast enough to serve as a replacement to our optimized C++ FCD object?

  • If not, would we build a new FCD object and reference its columns from the *Use objects?

  • Or should we just move to ArrayLists, with the general ones defined in the OpRegion and the *Use ones living in their own objects (implies a filtering implementation on an ArrayList object).

Pocket pc business objects
Pocket PC Business Objects each farm.

  • We use Business, Farm, Field, CropZone, Crop, Facility, Entity, etc objects in all applications.

  • In our first PPC project three years ago, we coded our own objects and loaded them with XML Readers. In our experiments last summer, we switched to the Dataset, reading a Schema file and an XML data file.

    • MUCH faster.

    • MUCH harder to code against. Can no longer ask for oFarm.MeasuredArea.Value… have to access a named column in the current row of the Farms table of the dataset.

  • As in the mpsNodeList, can we inherit DataSets and DataTables, so that we could have a CFarm class that would be an alternative interface in to a row of the Farms DataTable?

  • Sometimes we have to read data from other sources that is a folder hierarchy and text files. Would we define an IFarm interface and implement it on the CDataSetFarm class and the CFolderFarm class? Or would we provide a function to read a folder structure into a DataSet, enabling the CFarm class to work for both types of data?