ABOUTWelcome to Cogo! Cogo was developed as a free, accessible way of solving land survey computations.
Anyone can use Cogo. It is aimed at land surveying and geomatics engineering students, and others wanting to do surveying computations without expensive coordinate geometry software. Cogo is web-based and does not require installation.
Cogo is easy to use, and provides the practiced user with a faster way of performing calculations. For now, it is exclusively a calculator, but future versions may be capable of producing survey drawings.
For more information, contact us: firstname.lastname@example.org
COPYRIGHT, TERMSCopyright © 2018 Mark R. Mason, BCLS.
Cogo is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
Cogo is distributed in the hope that it will be useful, but without any warranty; without even the implied warranty of merchantability or fitness for a particular purpose. See the GNU General Public License for more details.
For more information, contact us: email@example.com.
VERSIONSEach older version of Cogo will remain available here. Future versions of Cogo will be able to open all data produced by earlier versions. Overview:
- Enabled sketch navigation on touch devices
- Improved curve calculator to allow solutions based on any two values
- Allowed entry of quadrantal bearings
- Moved HI and HT inputs to the main traverse area, removed from settings
- Added records contents and sketch states to saved file contents (backward compatible)
- Added ability to draw lines as points are being stored
- Improved tab order and element focus on return from prompts
- Added input by sketch point selection
- Allowed 'Enter' key to advance through input fields
- Added perimeter value to area calculations
- Bug fixes
- Sketch performance is laggy on lower-powered mobile devices
- Sketches behave erratically in some browsers when using a touch screen with a desktop computer
- Added "Adjust" tab featuring compass rule traverse adjustment with sideshots
- Added point-based line and arc drawing tools
- Added save/open feature, allowing archiving of named jobs (as .QCG file) to local computer
- Allowed editing of existing points without requiring previous deletion
- Added page exit warning to guard against accidental data loss
- Made Transform more flexible
- Improved sketch behaviour
- Bug fixes
- Compass rule adjustments must be performed by two fixed points, not by 1 fixed point and a fixed azimuth
- Update to HTML5 and modern standards
- Improved performance on mobile devices
- Added support for import of CSV as well as space separated points files
- Added support of DDD°MM'SS.SS..." style angle/azimuth input
- Sketches and reporting more user-friendly and complete
- Updated to SVG graphics for compatibility with future enhancements
- Added real-time input field checking, basic point name suggest
- Improved auto-complete behaviour
- Minor bug fixes
- Manipulation of sketches on touch devices is clumsy
- Not tested on many mobile platforms
- Zooming sketch far from active operation / near limits produces unpredictable results
- Tabbing far past end of form elements causes sketch controls to disappear
- Internet Explorer versions 11 and below struggle to render SVG graphics
- Zooming and panning of all sketches
- Triangle and curve solver
- Shortcut keys for all major operations
- Input constants, distance and area units
- Input expressions / existing point expressions
- Improved auto-complete behaviour
- Bug fixes
- Removing focus from browser window while editing points record corrupts record behaviour in some browsers
- Zooming in on some curves produces nonsense sketch
- Capable of basic plane survey computations, area calculations, and point manipulations
- Point import and export possible
- Automatic sketches provided for cogo operations
- Improperly entered HA in traverse menu produces nonsense results
- Point sort does not work properly for mixed numbers and strings
- Point suggest disappears when scroll bar clicked in some browsers
Future VersionsFuture versions of Cogo MAY include: cloud storage and account features, least squares adjustments, Helmert's transformation, automatic error propagation, sketch image outputting and DXF export, more complex linework, labelling and point-and-click drafting facilities, clothoid and roading calculations, map projections, heighting, and pro-rata operations.
DOWNLOADCogo can be downloaded to your computer and used when you're not connected to the internet.
Do not choose "Save Page As ..." in your browser. This method of saving Cogo is unreliable, and may produce a large variety of errors.
On some mobile devices, adding Cogo to your home screen will allow you to access Cogo like an app instead of a web page.
USING Q-COGOYou can start entering data and performing calculations as soon as Cogo loads. If you don't need to save your work, just exit the browser window when you're finished. Leaving Cogo or refreshing the page will erase any unsaved data.
Saving Your WorkIf you want to save your work (points, lines, settings and records) to your computer, first name your job at the left side of the title bar. Next, click the icon to save to your local machine. Control over the default save location is managed through your browser.
Open saved jobs by clicking on the icon. Cogo files have a ".qcg" file extension and can only be used by Cogo.
You can import comma-separated or space-separated points files by choosing "Edit", then pasting the contents of your text file into the points record. Export space-separated points by choosing "Select", then copying the record into a text file.
You can copy and paste the contents of any output record into a text file to reference later by choosing "Select".
Navigation and Data EntryEach area in Cogo includes pop-up help topics. Click on the nearest icon to learn more.
Cogo will automatically sketch points, lines, and all COGO operations. Sketches automatically zoom to the most relevant area, but you can zoom or pan manually for a better view. Arcs and lines can be drawn at any time to provide context.
Azimuths and angles must be entered in DMS, of the form DDD.MMSSSS... or DDD°MM'SS.SS..." (seconds decimals allowed). Quadrantal bearings can be entered by indicating the quadrant, for example "SW" followed by the bearing. Entering (or clicking) two points separated by two dots ('Pt1..Pt2') will retrieve the distance or azimuth inverse between those points. Simple mathematical expressions are allowed. Data can be entered by clicking on sketch points.
Point names and descriptions may be up to 8 characters. Any spaces will be replaced with underscores ('_'). Point names must not include commas (',') asterisks ('*') or dashes ('-').
For faster input, move between data fields by pressing 'Tab'.
All Cogo operations have been extensively checked; however, the possibility of error (especially with erroneous input) still exists. Be sure that results make sense, and double-check important work.
Please report bugs in detail: firstname.lastname@example.org.
SketchesCogo uses Scalable Vector Graphics (SVG) to sketch calculations. If you can't see sketches being generated automatically while you work, update your browser or switch to a browser that supports SVG.
Cogo has no maximum number of points, but zooming and panning sketches with a very large number of points and lines will result in laggy performance on slow computers. To improve performance, turn off point labelling or delete unnecessary points.
BrowsersCogo was designed in Google Chrome. Using Cogo in Chrome is highly recommended for fast, error-free performance.
Internet Explorer versions 11 and below render SVG graphics slowly, resulting in long lags and browser crashes. Using Internet Explorer is possible but NOT recommended.
Recent standards-compliant browsers should provide good performance. Because Cogo uses modern web components, update your browser to the latest version. In any browser, refreshing or leaving the page will result in your work being lost. Save your work often.
Cogo has not been tested with older browsers, many mobile devices, or obscure operating systems.
Please report bugs in detail: email@example.com.
SKETCHTo navigate around the sketch with a mouse, zoom by using the scroll wheel or 'Page Up' / 'Page Down'. Pan by holding the left mouse button or using the arrow keys. Double-click the sketch or press the middle circle to refresh the sketch. A clickable navigation area is also provided.
On a touch-enabled device, zoom by pinching the sketch with two fingers. Drag the sketch with one finger to pan.
Clicking on sketch points from a data entry field will add data to the field in the appropriate format. For example, in a field that accepts a list of points, point names will be separated by commas. In a field that accepts an angle or a distance, a 'Pt1..Pt2' expression will be formed instead.
Draw arcs and lines by choosing the appropriate tool, then clicking on the points in the sketch as instructed. Delete lines or arcs by choosing the delete tool, then picking the segments. If the line tool is selected, Cogo will draw lines between points as they are stored.
Toggle point labels (Point Name | Elevation | Description | None) by clicking on the link.
TIPS AND TRICKSCogo will sort and suggest points more effectively if point names are numeric. On mobile platforms, only numbers can be entered. For best results, don't include letters or symbols unless you absolutely need to.
If the default text size is too small in your desktop browser, try zooming the page. Cogo is completely scalable, so all components will adjust automatically to fit the screen.
To efficiently save files to your computer, set your browser to prompt for a save location instead of using the default download folder. This will allow you to over-write an existing file if you want to.
Data can be entered very quickly. Try using the Enter or Tab keys to navigate between fields, picking points by clicking on the drawing, and using "Pt..Pt" notation to retrieve bearing or distance inverses in any field.
POINTS RECORDThe Points Record displays a list of current points. Points are listed from left to right in the following columns:
To sort the points record, click on the desired column header in the points record title.
To load points from a text file, click "edit", then paste the file contents into the text area. Points must be space or comma separated in PNEZD format with no special characters.
To expand the points record, double click inside it. Click outside the record to return to normal size.
POINTS ( p )To store a point, enter its details as follows, then click "Store". Entering an existing point number will edit that point:
"Pt" and "Desc" may be up to 8 characters. Any spaces will be replaced with underscores ('_'). "Pt" must not must not contain simple mathematical characters, dots ('.'), or commas (',').
To delete a point, enter its name, then click "Delete". To delete a list of points, enter the point names separated by commas (','). Two points separated by a dash ('-') or dots ('..') indicate a range of points. Entering "*.*" indicates all current points.
To edit a point, enter the Point Name to retrieve the current point values. Edit the values, then choose "Store".
TRAVERSE RECORDThe Traverse Record displays a history of all traverses performed, whether a point was stored or not. To see previous traverses, simply scroll through the text box.
To expand the traverse record, double click inside it. Click outside the record to return to normal size.
TRAVERSE ( t )To solve a traverse without storing a point, choose "Solve". To solve a traverse and store a point, choose "Trav" or "SS". ("Trav" will increment the "From" and "BS" inputs, while "SS" will not.) Entering an existing point number will edit that point.
Traverses can be performed by "Azimuth" (angle clockwise from North) or by "Angle" (angle clockwise from a backsight point). Switch between traverse types by clicking on the title.
Traverses can be performed in 2D (horizontal distance) or 3D (slope distance and zenith angle). Switch between traverse dimensions by clicking on the title.
Azimuths and angles must be entered in DMS, of the form DDD.MMSSSS... or DDD°MM'SS.SS..." (seconds decimals and quadrantal bearings allowed). Entering (or clicking) two points separated by two dots ('Pt1..Pt2') will retrieve the distance or azimuth inverse between those points. Simple mathematical expressions are allowed.
ExampleLoad sample data (Points area). Enter the traverse data – From "103", Azimuth "30.1245", Horizontal Distance "45.123", and choose "Solve". To Store a point, enter the point number and description and choose "Trav" or "SS".
Next, click the "Azimuth" link to toggle to Angle mode. Enter "102" as the Backsight point (leave the other data in place) and choose "Solve". Notice that the angle is now measured from point 102 instead of from North.
Toggling from 2D to 3D will allow you to enter a Zenith Angle and Slope Distance instead of a Horizontal Distance. Don't forget to enter the heights of your instrument and target!
INVERSE RECORDThe Inverse Record displays a history of all inverses performed. To see previous inverses, simply scroll through the text box.
To expand the inverse record, double click inside it. Click outside the record to return to normal size.
INVERSE ( i )Inverses can be performed between two points or between a point and a line, the line being defined by two points. Switch between inverse types by clicking on the title.
Inverses can be performed in 3D or, for simplicity, in 2D. Switch between inverse dimensions by clicking on the title.
ExampleLoad sample data (Points area). Enter the inverse points – From "514", To "512", and choose "Solve".
Next, click the "Point" link to toggle to Line mode. 514 and 512 are now the Start and End points of a line. Enter "507" as the From point and choose "Solve".
INTERSECT RECORDThe Intersect Record displays a history of all intersections performed, whether a point was stored or not. To see previous intersections, simply scroll through the text box.
To expand the intersect record, double click inside it. Click outside the record to return to normal size.
INTERSECT ( x )To solve an intersection without storing a point, choose "Solve". To solve an intersection and store a point, choose "Store". Entering an existing point number will edit that point.
Intersections can be performed between any two points with a non-zero horizontal distance between them. The intersection may be "Brg-Brg" (two directions), "Brg-Dist" (a direction and a distance) or "Dist-Dist" (two distances). Switch between intersection types by clicking on the title.
Intersections may only be performed in 2D. Resulting points will be stored with an elevation of zero.
Azimuths must be entered in DMS, of the form DDD.MMSSSS... or DDD°MM'SS.SS..." (seconds decimals and quadrantal bearings allowed). Entering (or clicking) two points separated by two dots ('Pt1..Pt2') will retrieve the distance or azimuth inverse between those points. Simple mathematical expressions are allowed.
ExampleLoad sample data (Points area). Enter the Bearing-Bearing intersection data – From "510", Azimuth "130.2345", To "513", Azimuth "245.3255", and choose "Solve". To Store a point, enter the point number and description and choose "Store".
Next, click the "Brg-Brg" link to toggle to Bearing-Distance and Distance-Distance modes. Try entering your own data. The last two modes produce 2 solutions – you'll be asked which solution you want to use.
Remember that parallel bearings don't intersect, and calculations involving distances won't intersect if a distance is too small or too large!
TRANSFORM RECORDThe Transform Record displays a history of all transformations performed (shifts, scales and rotations). To see previous transformations, simply scroll through the text box.
To expand the transform record, double click inside it. Click outside the record to return to normal size.
TRANSFORM ( f )To transform a list of points, enter the point names separated by commas (','). Two points separated by a dash ('-') or dots ('..') indicate a range of points. Entering "*.*" indicates all current points. Choose to transform By "Values" or By "Points" by clicking on the title.
Points may be:
- Shifted ("+N", "+E", or "+Z" in By Values mode, or "Az" and "Dist" in By Points mode),
- Scaled by a scale factor ("SF"), or
- Rotated ("Rot" in By Values mode, or "Dir 1" and "Dir 2" in By Points mode).
The transformation will preserve parallel lines and distance ratios – that is, a transformed square will remain a square.
Angles must be entered in DMS, of the form DDD.MMSSSS... or DDD°MM'SS.SS..." (seconds decimals and quadrantal bearings allowed). Simple mathematical expressions are allowed when entering angles or distances.
In By Values mode ONLY, Entering (or clicking) two points separated by two dots ('Pt1..Pt2') will retrieve the appropriate 1-dimensional difference between those points (Northing, Easting or Elevation). In By Points mode, this notation will retrieve the distance or azimuth inverse between those points as usual.
ExampleLoad sample data (Points area). Enter the transform data – Points "601..606", About "605", Northing Shift "-5.125", Easting Shift "-4.915", Elevation Shift "1.000", Rotation "355.2705" and choose "Transform". Leave Scale Factor blank. Choose to commit to the transformation to edit the points.
Notice that the house has been moved and rotated within the lot. Linework will follow points when they are edited or transformed.
Next, click the "Values" link to toggle to Points mode. Enter an azimuth of "6..1", a distance of "3", and an Elevation Shift of "601..6". Enter "606..601" for Direction 1, and "1..6" for Direction 2. Tranform the points.
Notice that the house has been turned to the destination direction – parallel to the West lot boundary. The elevations have all been shifted to 0, which was the difference between points 601 and 6. The house has been shifted along an azimuth parallel to the West boundary.
In the Values mode, try entering "104..515" in the Northing Shift, Easting Shift, and Elevation Shift areas. Notice how only the 1-dimensional component is returned instead of the usual 2-dimensional inverse value.
ADJUST RECORDThe Adjust Record displays a history of all traverse adjustments performed. To see previous adjustments, simply scroll through the text box. To see full details of even the most recent adjustment, you will need to expand the record or scroll up.
To expand the adjust record, double click inside it. Click outside the record to return to normal size.
ADJUST ( j )To perform a traverse adjustment, enter the required existing points, always in the direction of the traverse progression. An asterisk ('*') after a point (eg: Pt*) indicates that the point is a sideshot from the last main traverse point.
"Start" point(s) are the 1-2 fixed points at the beginning of the traverse. These points cannot be sideshots and will not be adjusted.
"Close" point(s) are the 1-2 fixed points at the end of the traverse. These points cannot be sideshots and will not be adjusted. Start and Close points may be the same.
"Adj", or Adjust points, are the points which will be adjusted. At least 2 main traverse (non-sideshot) points must be entered, or at least 3 if 2 close points are entered. The last 1-2 main traverse Adjust points must match the 1-2 Close points.
If 2 Start points and 2 Close points are entered, an angle balance will be performed prior to the compass rule adjustment. If only 1 Start and/or Close point is entered, only a compass rule adjustment will be performed.
ExampleLoad sample data (Points area). Enter data as follows to form a closed-loop traverse:
- Start points: "101,102"
- Close points: "101,102"
- Adjust points: "103,1*,510*,514*,104,4*,515*,105,106"
TipsPoints, even Start and Close points, must always be entered in the direction of the traverse progression. The last 1-2 main traverse Adjust points must correspond to the 1-2 Close points.
Always check the results and the sketch using the "Solve" button before using "Adjust" to permanently update the points database.
Review that the Adjust settings (in the Settings area) are configured correctly before performing an adjustment. To see more detailed analysis, choose "Detailed" info instead of "Quick".
MethodologyAdjustments are performed from existing points, not RAW observations. However, RAW observations are interpolated from existing point coordinates, which produces the same results without requiring a separate observation data file.
Traverses are adjusted in two steps: Angle Balance and Compass Rule.
Angle Balance compares the calculated closing azimuth to the observed closing azimuth. If the closure is acceptable, each observed angle receives an identical adjustment, regardless of the length of the observation line. Angle balance requires 2 start points and 2 close points to work. If you want to adjust using only the compass rule, enter only 1 Start point and/or 1 Close point.
If you only wish to enter a closing angle (no distance was observed), a dummy point must be entered, preferably at the known closing distance.
Compass Rule adjusts points based on the traverse misclosure Angle Balance. (Remember, balancing angles can sometimes make the traverse closure larger.) Coordinates are adjusted based on line length, with longer observations receiving larger adjustments.
Balancing a traverse with only a fixed opening/closing azimuth is not yet possible in Cogo. Starting on 2 fixed points at the initial azimuth will approximate this result, but the first observed distance will be held fixed.
Misclosure CalculationsAngle misclosure is calculated by comparing opening and closing azimuths, only if 2 Start points and 2 Close points are entered.
Distance misclosure is calculated at the first Close point. The second close point will be used for angle misclosure calculations only.
Traverse length is calculated from the last Start point to the first Close point. Distances between Start and Close points are not part of the traverse (and are not necessarily observed) and cannot be included in the traverse length.
Relative precision is computed by dividing the traverse length by the total misclosure and is rounded to 2 significant figures.
AREA RECORDThe Area Record displays a history of all area calculations performed. To see previous areas, simply scroll through the text box.
To expand the area record, double click inside it. Click outside the record to return to normal size.
AREA ( a )To calculate the area bounded by a list of points, along with its corresponding perimeter, enter the point names separated by commas (','). Two points separated by a dash ('-') or dots ('..') indicate a range of points. Entering "*.*" indicates all current points, in their current order.
An asterisk ('*') after a point (eg: Pt*) indicates a radial point on a curve with the shorter of two possible arc lengths. An asterisk before a point (eg: *Pt) indicates the longer arc length.
Bounding points and curves may be entered in a clockwise or counter-clockwise manner. The bounding path will automatically close to the first point. The bounding path must not cross itself or use a non-radial point more than once.
Before accepting an area calculation, inspect the sketch of the operation to ensure that your path does not intersect or meet itself, and that any curves deflect in the correct direction.
ExampleLoad sample data (Points area). Define the area of the outlined lot as follows: "1,6,5*,2,3,4". Notice that the "5*" denotes the centre of the curve. Eliminating this point and entering "1,6,2,3,4" excludes the segment area.
SOLVER RECORDThe Solver Record displays a history of all solver calculations performed. To see previous triangle or curve solutions, simply scroll through the text box.
To expand the solver record, double click inside it. Click outside the record to return to normal size.
SOLVER ( l )Use the solver to solve triangles or circular curves. Switch between solver shapes by clicking on the title.
To solve a triangle, enter 3 values, leave the other 3 blank, and choose "Solve". At least 1 of the values must be a side length.
To solve a circular curve, enter any 2 values, leave the other 3 blank, and choose "Solve". If entering Tangent and Length, Tangent must be negative to indicate a Delta greater that 180°.
In either Triangle or Curve mode, some value combinations may produce impossible shapes or shapes with extremely sensitive geometry.
Angles must be entered in DMS, of the form DDD.MMSSSS... or DDD°MM'SS.SS..." (seconds decimals allowed). Entering two points separated by two dots ('Pt1..Pt2') will retrieve the distance or azimuth inverse between those points. Simple mathematical expressions are allowed.
ExampleIn Triangle mode, enter 45°00'00" for A, "23.000" for a, "30.000" for b, and choose "Solve". Leave the other values blank. Notice that this input is ambiguous, so Cogo provides two possible solutions. Leaving A blank and entering 45°00'00" for B produces only 1 solution.
Next, click "Triangle" to toggle to Curve mode. Enter "150.000" for Radius, "126.000" for Length, and choose "Solve". Entering "-23.000" for Tangent and "126.000" for Length will yield a curve with a Delta value larger than 180°. (Note that a positive Tangent in this same case would yield an impossible curve.)
PRECISIONTo change the display precision for a particular value type, simply pick it from the appropriate drop down list. Settings will be reflected immediately in the points record. Other records will reflect the change in the results of the next operation.
Changing display precision will not affect stored point precision. Stored points always carry ten decimal places to minimize rounding errors.
INPUT CONSTANTSTo apply a scale factor to entered distances, enter a value other than 1 for "SF". The scale factor will not be applied to coordinates, other scale factors, or HI / HT.
To apply a rotation angle to entered azimuths, enter a non-zero value for "Rot". The angle will not be applied to other rotations, interior angles, or zenith angles.
Angles must be entered in DMS, of the form DDD.MMSSSS... or DDD°MM'SS.SS..." (seconds decimals and quadrantal bearings allowed). Entering (or clicking) two points separated by two dots ('Pt1..Pt2') will retrieve the distance or azimuth inverse between those points. Simple mathematical expressions are allowed.
UNITSTo change the working units, simply select a new value from the drop-down list. Changing units only changes the displayed units and does NOT apply a scale factor. To scale existing values, use "Transform". To scale input values, use "Input Constants" (above).
Mixing metric and imperial units is not allowed. For example, selecting "Feet" as a distance unit will automatically change the area unit to "Acre". Changing "Disp?" changes the unit output visibility.
TRAVERSE TOLERANCESTo change the traverse closure tolerance settings, simply select new values from the drop-down lists.
If the values calculated during the course of the traverse adjustment are higher than the chosen tolerances, the adjustment will fail.
"Prec" is the minimum relative precision for the traverse. "Misc" is the maximum allowable absolute distance misclosure. "Angle" is the maximum allowable angle adjustment to each traverse leg.
The "Info" toggle controls the level of detail in the traverse report. Choose "Quick" for a brief overview, and "Detailed" for full analysis.
HELP ( h )To get help on a topic, choose the appropriate link from the list. The help content box will scroll to the topic. Scroll through the help content box to browse all help topics.
Each area in Cogo includes pop-up help topics relevant to that area. Click on the nearest "?" icon learn more about using a feature.
SHORTCUT KEYSFor quick access, each menu item has a shortcut key – to find it, hover over the menu link. The following is a list of current menu shortcut keys:
To navigate through the sketch / inputs:
Zoom:Page up / Page Down
Next:Tab / Enter
To control the sketch linework tools:
ABBREVIATIONSThe following is a complete index of technical abbreviations used in Cogo:
BC:Beginning of Curve
DMS:Degrees Minutes Seconds
EC:End of Curve
HI:Height of Instrument
HT:Height of Target