Page 1 of 2 12 LastLast
Results 1 to 10 of 11

Thread: W.I.P., river work

  1. #1
    Guild Journeyer Pananacakes's Avatar
    Join Date
    Aug 2014
    Location
    Portland, Maine, USA
    Posts
    102

    Wip W.I.P., river work

    Click image for larger version. 

Name:	river work may 29.png 
Views:	164 
Size:	2.05 MB 
ID:	96146


    I've been extending and refining the rivers I originally got from Wilbur. It's a slow process. So slow...

    I dimmed the landscape to make the rivers stand out more. Do they look ok?

    (The little hexagons with dots in the middle are dwarfs' villages, in case of wondering. Names are off because I'm reworking them.)
    Last edited by Pananacakes; 05-29-2017 at 06:22 AM.

  2. #2
    Guild Artisan Guild Supporter Tenia's Avatar
    Join Date
    Dec 2016
    Location
    France
    Posts
    621

    Default

    Looking good and realistic Pananacakes, gon on ! You will have a long work naming all those towns and villages, no ?

  3. #3
    Guild Journeyer Pananacakes's Avatar
    Join Date
    Aug 2014
    Location
    Portland, Maine, USA
    Posts
    102

    Default

    Thanks! I do have names for them now, but I'm not happy with them all yet. I want to do it better once the rivers are done.

  4. #4
    Guild Artisan Pixie's Avatar
    Join Date
    Jan 2014
    Location
    Lisbon
    Posts
    939

    Default

    A scale would be very helpful. Any opinion on this will depend on the size of the terrain portrayed.

    Here's a suggestion:
    1. save a copy of your map in a low quality format or reduced in terms of pixels
    2. get the software Google Earth (if you don't have it yet)
    3. open it and apply your map on it, as an overlay, maybe at a less than 100% opacity
    4. play with it, adjusting its position in comparison to Earth, in terms of size and latitude
    5. when happy, use the ruler tool to measure its size so you can add a scale to the map (and tell us how large is this map)

    Doing this, you'll also be able to compare your rivers and mountain formations to actual Earth features.

  5. #5
    Guild Journeyer Pananacakes's Avatar
    Join Date
    Aug 2014
    Location
    Portland, Maine, USA
    Posts
    102

    Default

    The context is an island with central mountains and relatively steep terrain down to the coast. The island is about 550 km long and has a mean width ~90 km. On the pic I've posted here 9 pixels = 1 km, so the narrowest river that can be shown is ~27 meters wide.

    The climate is oceanic. A Japanese island might be a good analogy except I think my island is a bit wetter.

  6. #6
    Guild Artisan damonjynx's Avatar
    Join Date
    Aug 2012
    Location
    Sydney, Australia
    Posts
    811

    Default

    Your map looks really good. Love how you've done the height relief. Good luck with entering all the text
    Glory is the reward of valour.

    My blog at: damonjynx.blogspot.com.au

    Finished Maps

  7. #7
    Guild Journeyer Pananacakes's Avatar
    Join Date
    Aug 2014
    Location
    Portland, Maine, USA
    Posts
    102

    Default

    Quote Originally Posted by damonjynx View Post
    Good luck with entering all the text
    I have a secret weapon for that - at least for the village names.

  8. #8

    Default

    Please share, text is the worst in cartography.

  9. #9
    Guild Journeyer Pananacakes's Avatar
    Join Date
    Aug 2014
    Location
    Portland, Maine, USA
    Posts
    102

    Default

    After preliminary work in Photoshop to distribute the villages I wrote a program to place the symbols and names. Each time I use it I tweak it a bit here and there, but here's the basic version (in Python):



    from PIL import Image, ImageDraw, ImageFont
    import sys
    import random

    elvish_town_names_file = open('Elven Village Names.txt', 'rb')
    elvish_town_names = elvish_town_names_file.readlines()
    elvish_town_names_file.close()
    random.shuffle(elvish_town_names)

    dwarvish_town_names_file = open('Dwarven Village Names.txt', 'rb')
    dwarvish_town_names = dwarvish_town_names_file.readlines()
    dwarvish_town_names_file.close()
    random.shuffle(dwarvish_town_names)

    barb_town_names_file = open('Barbarian Village Names.txt', 'rb')
    barb_town_names = barb_town_names_file.readlines()
    barb_town_names_file.close()
    random.shuffle(barb_town_names)

    picture = Image.open('d:/settlement dots in.tif', 'r')
    width, height = picture.size
    pixels = picture.load()
    elf_coordinates = []
    dwarf_coordinates = []
    human_coordinates = []
    human_barb_coordinates = []
    halforc_barb_coordinates = []
    elf_villages = []
    dwarf_villages = []
    human_villages = []
    human_barb_villages = []
    halforc_barb_villages = []
    e_villages = 0
    h_villages = 0
    d_villages = 0
    hb_villages = 0
    ob_villages = 0
    for x_coordinate in range(width):
    for y_coordinate in range(height):
    if pixels[x_coordinate, y_coordinate] == (0, 0, 255):
    elf_coordinates.append( (x_coordinate, y_coordinate) )
    elif pixels[x_coordinate, y_coordinate] == (255, 255, 0):
    dwarf_coordinates.append( (x_coordinate, y_coordinate) )
    elif pixels[x_coordinate, y_coordinate] == (0, 255, 0):
    human_coordinates.append( (x_coordinate, y_coordinate) )
    elif pixels[x_coordinate, y_coordinate] == (255, 128, 0):
    human_barb_coordinates.append( (x_coordinate, y_coordinate) )
    elif pixels[x_coordinate, y_coordinate] == (255, 0, 0):
    halforc_barb_coordinates.append( (x_coordinate, y_coordinate) )

    image_field = Image.new('L', (width, height), (255))
    label_font = ImageFont.truetype('GentiumPlus-R.ttf', 19)
    label_font = ImageFont.truetype('Carta-Pananacakes.ttf', 30)
    drawn_image = ImageDraw.Draw(image_field)

    for x_y_pair in elf_coordinates:
    e_villages += 1
    town_id = "E" + str(e_villages)
    town_name = elvish_town_names.pop().decode("utf-8")
    data = (x_y_pair, town_id, town_name)
    elf_villages.append(data)
    xc = x_y_pair[0] - 8
    yc = x_y_pair[1] - 8
    symbol_font = ImageFont.truetype('Carta-Pananacakes.ttf', 30)
    drawn_image.text((xc, yc), ";", font=symbol_font, fill=(0))
    drawn_image.text((xc + 21, yc - 6), town_name, font=label_font, fill=(16))

    for x_y_pair in dwarf_coordinates:
    d_villages += 1
    town_id = "D" + str(d_villages)
    town_name = dwarvish_town_names.pop().decode("utf-8")
    data = (x_y_pair, town_id, town_name)
    dwarf_villages.append(data)
    xc = x_y_pair[0] - 8
    yc = x_y_pair[1] - 8
    symbol_font = ImageFont.truetype('Carta-Pananacakes.ttf', 2
    drawn_image.text((xc, yc), "’", font=symbol_font, fill=(0))
    drawn_image.text((xc + 21, yc - 7), town_name, font=label_font, fill=(16))

    for x_y_pair in human_coordinates:
    h_villages += 1
    town_id = "H" + str(h_villages)
    town_name = elvish_town_names.pop().decode("utf-8")
    data = (x_y_pair, town_id, town_name)
    human_villages.append(data)
    xc = x_y_pair[0] - 8
    yc = x_y_pair[1] - 8
    symbol_font = ImageFont.truetype('Carta-Pananacakes.ttf', 30)
    drawn_image.text((xc, yc), ":", font=symbol_font, fill=(0))
    drawn_image.text((xc + 21, yc - 6), town_name, font=label_font, fill=(16))

    for x_y_pair in human_barb_coordinates:
    if random.randint(1, 5) < 6:
    hb_villages += 1
    town_id = "HB" + str(hb_villages)
    town_name = barb_town_names.pop().decode("utf-8")
    data = (x_y_pair, town_id, town_name)
    human_barb_villages.append(data)
    xc = x_y_pair[0] - 8
    yc = x_y_pair[1] - 8
    symbol_font = ImageFont.truetype('Carta-Pananacakes.ttf', 29)
    drawn_image.text((xc, yc), "d", font=symbol_font, fill=(0))
    drawn_image.text((xc + 22, yc - 1), town_name, font=label_font, fill=(16))

    for x_y_pair in halforc_barb_coordinates:
    if random.randint(1, 5) < 6:
    ob_villages += 1
    town_id = "OB" + str(ob_villages)
    town_name = barb_town_names.pop().decode("utf-8")
    data = (x_y_pair, town_id, town_name)
    halforc_barb_villages.append(data)
    xc = x_y_pair[0] - 8
    yc = x_y_pair[1] - 8
    symbol_font = ImageFont.truetype('Carta-Pananacakes.ttf', 29)
    drawn_image.text((xc, yc), "D", font=symbol_font, fill=(0))
    drawn_image.text((xc + 22, yc - 1), town_name, font=label_font, fill=(16))

    settlement_names_file = open("Settlements Data.txt", 'ab')
    for d in elf_villages:
    data_line = "(" + str(d[0][0]) + "," + str(d[0][1]) + ")" + ", " + d[1] + ", " + d[2] + "\n"
    data_line = data_line.encode("utf-8")
    settlement_names_file.write(data_line)
    for d in dwarf_villages:
    data_line = "(" + str(d[0][0]) + "," + str(d[0][1]) + ")" + ", " + d[1] + ", " + d[2] + "\n"
    data_line = data_line.encode("utf-8")
    settlement_names_file.write(data_line)
    for d in human_villages:
    data_line = "(" + str(d[0][0]) + "," + str(d[0][1]) + ")" + ", " + d[1] + ", " + d[2] + "\n"
    data_line = data_line.encode("utf-8")
    settlement_names_file.write(data_line)
    for d in human_barb_villages:
    data_line = "(" + str(d[0][0]) + "," + str(d[0][1]) + ")" + ", " + d[1] + ", " + d[2] + "\n"
    data_line = data_line.encode("utf-8")
    settlement_names_file.write(data_line)
    for d in halforc_barb_villages:
    data_line = "(" + str(d[0][0]) + "," + str(d[0][1]) + ")" + ", " + d[1] + ", " + d[2] + "\n"
    data_line = data_line.encode("utf-8")
    settlement_names_file.write(data_line)
    settlement_names_file.close()

    image_field.save('d:/settlements out.tif', "TIFF")





    Edit: The forum destroyed my formatting so that code won't run with as is; the whitespace is messed up. I hope you can get the gist of it.

  10. #10
    Guild Journeyer Pananacakes's Avatar
    Join Date
    Aug 2014
    Location
    Portland, Maine, USA
    Posts
    102

    Default

    I forgot to mention that to prevent name texts from overlapping each other you can use a thing called quad trees. (https://en.wikipedia.org/wiki/Quadtree - but their usage for labelling like this isn't nearly as complex as that article makes it out to be.) I have a plan for it but haven't implemented it yet. I took a break from language and programming to do these rivers.

Page 1 of 2 12 LastLast

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •