Describing the profile of a vessel in a digital format

The most difficult part of the story is finding an acceptable digital format for describing the profile of a vessel.

For drawing purposes, it is common to use vector graphics software or CAD systems. It is clear that it is highly desirable to represent the profile as a vector geometry, that is, a sequence of points and lines in a cartesian space.

However, all those programs are made for drawing, and not for describing geometric entities in a purely abstract fashion. We don’t need line widths, colors and other such features. Furthermore, we don’t want to work in a coordinate system where the origin (the 0,0 point) is in the top left corner, like for example SVG does. We don’t need anything that has to do with graphics, just a compact way of representing a (tiny) set of ordered geometric coordinates.

CSV: a basic approach

Until now, the most convenient way for doing so may be a good old CSV file:

11.5989847716,11.4316005076
12.4873096447,11.3938563452
13.4263959391,11.387836802
14.6700507614,11.4760149746
16.1675126904,11.6587162437
16.7512690355,11.7511243655
17.9441624365,12.0639779188
18.7563451777,12.6677218274
19.3147208122,13.4012926396
19.6446700508,14.008127665
19.7715736041,14.1675642132
19.7969543147,14.2635515228
19.7969543147,14.3917515228
19.923857868,14.8075880711

While it might seem awkward at first sight, it contains all the information we need. The only problem with this approach is that there is no place for metadata like the name and description of the vessel.

GeoJSON: going further

A slighly more advanced encoding of the same data can be expressed as GeoJSON:

{ "type": "Feature",
  "geometry": {
    "type": "LineString",
      "coordinates": [
            [11.5989847716,11.4316005076],
            [12.4873096447,11.3938563452],
            [13.4263959391,11.387836802],
            [14.6700507614,11.4760149746],
            [16.1675126904,11.6587162437],
            [16.7512690355,11.7511243655],
            [17.9441624365,12.0639779188],
            [18.7563451777,12.6677218274],
            [19.3147208122,13.4012926396],
            [19.6446700508,14.008127665],
            [19.7715736041,14.1675642132],
            [19.7969543147,14.2635515228],
            [19.7969543147,14.3917515228],
            [19.923857868,14.8075880711],
      ],
    },
  "properties": {
    "name": "Hayes 61 B",
    "description": "A quite small version of 61 B.",
    "author": "Stefano Costa",
  }
}

This format is cheap, and it can be read directly by dedicated geometry libraries. It’s not easy to type, but it’s definitely easy to read. Plus, the idea is that you don’t have to type it, because a dedicated program can do the work for you.

If you use the GIMP, Kotyle has GIMP plugins that export vector paths to GeoJSON and facilitate creating digital profiles.

GeoJSON profiles can be analysed with Μετρω, the Kotyle measurement tool.