private void loadRiverCrossings(Path baseDir) throws IOException{
        Path mapImagePath = getFilePath(MapFile.RIVERS, baseDir);

        try(InputStream stream = new FileInputStream(mapImagePath.toString())) {
            BufferedImage mapImage = ImageIO.read(stream);
            int[] rgbValues = mapImage.getRGB(0, 0, width, height, null, 0, width);

            int landRgb = 0xFFFFFFFF;
            int waterRgb = 0xFF7A7A7A; // Seas and lakes

            for(Province province : provinces){
                if(province.provinceType != ProvinceType.LAND)
                    continue;

                Point2D sourcePoint = province.PositionFor(PositionType.UNIT);

                for(Province adjacency : province.adjacentProvinces){
                    if(adjacency.provinceType != ProvinceType.LAND)
                        continue;

                    Point2D destinationPoint = adjacency.PositionFor(PositionType.UNIT);

                    List<Coordinate> pointsBetween = MapUtilities.getPointsBetween(sourcePoint, destinationPoint);
                    for(Coordinate coordinate : pointsBetween) {
                        int rbgIndex = coordinate.x + width * coordinate.y;
                        int coordinateRgb = rgbValues[rbgIndex];
                        if (coordinateRgb != landRgb &&
                                coordinateRgb != waterRgb)
                            adjacency.riverCrossings.add(province);
                    }
                }
            }
        }
    }