Skip to content

Projections

Every project carries one coordinate system, and that system decides more than where the app draws the network. The projection does four things:

  • It puts a background map under the pipes.
  • It makes it possible to look up elevations from the terrain.
  • It sets what a zone file or a customer point file must agree with.
  • It sets the numbers that come back out of an export.

Internally the app holds every coordinate in longitude and latitude. It converts on an import, and it converts back on an export. The system it converts to and from is the project’s projection. The app stores that projection in the .ejsdb file with the model. See Projects.

There are two kinds of project:

  • A projected project sits on the ground. Its coordinates are longitude and latitude, or a named coordinate reference system with an EPSG code (a national grid, a UTM zone, a state plane). Base maps, satellite imagery, terrain elevations, zone polygons and customer point files all line up with it.
  • An X-Y grid project has coordinates but no position. The numbers are a local grid, for example a schematic, a textbook example or a test network. The map draws a grid under them instead of a base map. There is no ground under the network, so everything that needs a real-world location is unavailable.
Where What you are asked
New project Two cards, Map-based or Simple X-Y Grid — see Projects
An INP import When the app cannot read the file’s coordinates as longitude and latitude, the Network projection dialog opens — see Bring in an existing model
Map tab > Projection How to change it later — see Changing the projection later

A model built from GIS data is a fourth case. The builder reads the projection from the files themselves, from a Shapefile’s .prj or from a CRS in a GeoJSON. It asks you only when it cannot read one. See Build a model from GIS.

Network projection is one screen. It has a search column on the left, a preview map on the right, and two actions in the footer. It opens on an empty state that shows Find your projection. The cursor is already in the search box.

The Network projection dialog, with a Kentucky system selected and the network previewed over the streets it serves

Both frames on this page show the same file, a distribution network in Kentucky. Its coordinates are US survey feet on the Kentucky Single Zone. One frame was taken by place name, the other by EPSG code. Bring in an existing model walks it both ways.

  1. Type into Search by location or code. Two characters are enough to search.

    The results mix two kinds of entry. Place names come from a geocoder, and a pin marks each one. The app matches coordinate systems against their name and their EPSG code. It shows up to five of them, with the closest match first. If you type a full code or a full system name, the app skips the place search and shows that system alone.

    The Network projection dialog with a place typed into the search box and its results listed, each marked with a pin

  2. Choose a place. The preview flies to it, and the left column fills with Matching projections and a count.

    That list is the useful part. It holds every coordinate system that puts your network’s extent inside the part of the map you can see. The app applies the first one for you. When you pan or zoom the preview, the app filters the list again. A zoom out widens the list. A zoom in narrows it to the systems that put the network exactly here.

    If you choose a coordinate system directly, the app applies it at once and fits the preview to the network. The app clears the candidate list, then fills it again from where the preview lands.

    The Network projection dialog after an EPSG code was typed straight in, with one system matched and the preview fitted to the network

  3. Look at the preview. The app draws the network over a light base map. Make sure that the mains sit over the streets, and that the outline sits where the system it serves actually is. The zoom controls and Fit to extent are at the bottom right of the preview.

  4. Work down the candidates with the network on screen. Each click reprojects the preview and leaves the map where it is. The network jumps from candidate to candidate, and the wrong ones move out of view.

  5. Press Apply projection.

On an import, the app converts the file’s coordinates and loads the model. From the Map tab, the app converts the model in place — see Changing the projection later.

  • Projection out of bounds means that the system you chose sends your coordinates outside the range of longitude and latitude. Usually the system belongs to another part of the world, or the file’s numbers are not in a projected system at all. The preview drops the base map and draws the network near the origin. Apply projection stays grayed until you choose another system.
  • No matching projections found here means that no system in the list projects your network into the view. Zoom the preview out, or search somewhere else.
  • Search by location service is unavailable. Try again later or use a EPSG code or projection name means that the app cannot reach the geocoder. Search by code or by name still works. Only place names are affected.
  • A system marked deprecated sorts to the bottom of every list, so the first entry the app offers is a current one.

Continue without basemap is the other answer. It is the right one when the model has no true location, for example a training network, a hydraulics exercise or a schematic drawn to relative dimensions. It makes the project an X-Y grid, centered on the network itself. The project keeps the coordinates the file already had.

On an INP import, the app also gives the grid a scale. It compares each pipe’s declared length against the straight-line distance between its end nodes, and takes the median ratio. Distances measured on the grid then agree with the lengths in [PIPES], whatever unit the file’s coordinates were in.

Not available Instead
Base maps and satellite imagery A grid, with a scale bar at the bottom left in the project’s length unit
The Layers section of the Map tab Nothing, because custom layers have nothing to line up with
The Elevations section, and elevations fetched as you draw Type elevations in, or bring them in with the model
File > Import > Zones Grayed out
Allocate customer points Grayed out, because allocation is a distance calculation on the ground
The terrain band behind an HGL profile The app draws the profile itself as normal

Everything else is the same: drawing and editing, the data tables, symbology, Network Review, running the model, reading results, graphs, and every export. See The map and its layers, Elevations, Zones, Customer points and HGL profile.

The Map tab of the side panel ends with a Projection section. What that section holds depends on the project:

  • On an X-Y grid project, a Set map projection button. It opens Network projection with the network drawn in its own grid coordinates, and you then search in the same way. Here Continue without basemap only closes the dialog and leaves the grid as it was.
  • On a project in a named coordinate system, the system’s name and its EPSG code, with a pin button beside them. The button reopens Network projection with that system already selected, so you can compare it against its neighbors. The secondary action reads Remove basemap instead. That action turns the project into an X-Y grid with the same coordinates.
  • On a project in longitude and latitude, WGS 84 and EPSG:4326, and no button. There is nothing to convert.

The Projection section of the Map tab on a project in a named coordinate system, showing the system’s name, its EPSG code and the pin button beside them

The whole section goes read-only while a scenario exists, and while the app plays back the results of a run. Close the scenarios first — see Scenario work.

Two things a reprojection deliberately leaves alone:

  • The app does not fetch elevations again. The values already on the nodes stay as they are. That is what you want if the values came in with the model. It is not what you want if the app looked them up at the wrong location. If the network moved somewhere new, use Recalculate all elevations in the Elevations section afterwards. See Elevations.
  • The app does not compute pipe lengths again. Each pipe keeps the Length it already had. A length read from an INP, or typed in by hand, survives the move unchanged. See Pipes.

What the projection controls on the way out

Section titled “What the projection controls on the way out”

The app writes every export in the project’s projection. A file that came in correctly goes back out in the same numbers it arrived with:

  • An EPANET INP carries [COORDINATES] and [VERTICES] in the project’s own system.
  • A GeoJSON export names the system in the file’s crs member, as an EPSG URN.
  • A Shapefile export writes a .prj beside it, with the system’s WKT definition. On an X-Y grid project, that .prj holds a local coordinate system in meters, not a real-world one. GIS software then places the network at the origin.

See Import and export.