Построение изображения города на PHP

<?php
    header ("Content-type: image/png");
 
    # Задание цветов #
    $im = ImageCreate (1000,1000);
    $blue_sky = imagecolorallocate($im, 160, 208, 254);
    $red = ImageColorAllocate($im, 255, 0, 0);
    $white = ImageColorAllocate($im, 255, 255, 255);
    $black = imagecolorallocate($im, 0, 0, 0);
    $asphalt = imagecolorallocate($im, 96, 96, 96);
    $green = imagecolorallocate($im, 63, 155, 11);
    $gray = imagecolorallocate($im, 160, 160, 160);
    $blue = imagecolorallocate($im, 40, 44, 108);
    $yellow = imagecolorallocate($im, 255, 249, 23);
 
    # Массив координат краевых точек фонаря #
    $fonar = [
        14, 746,
        14, 732,
        28, 732,
        28, 718,
        42, 718,
        42, 508, 
        56, 494,
        98, 494, 
        98, 508,
        112, 522,
        112, 536,
        70, 536,
        70, 522, 
        84, 508,
        56, 508,
        56, 718,
        70, 718,
        70, 732,
        84, 732,
        84, 746
    ];
 
    # Массив координат краевых точек зданий (заднего плана) #
    $buildings = [
        0, 720,
        0, 240,
        80, 240,
        80, 360, 
        160, 360,
        160, 220,
        280, 280, 
        280, 240,
        320, 240,
        320, 280, 
        400, 280,
        400, 440,
        480, 440,
        480, 360,
        360, 360, 
        360, 440,
        600, 440, 
        600, 200, 
        720, 200,
        720, 480, 
        800, 360, 
        880, 360,
        880, 280,
        1000, 280,
        1000, 720
    ];
 
    # Массив координат краевых точек разметки на дороге #
    $parallel = [
        120, 880,
        160, 840,
        280, 840,
        240, 880
    ];
 
    # Заливка фона (неба) #
    imagefill($im, 0, 0, $blue_sky);
 
    # Рисование прямых линий (краев дороги и края заднего плана) #
    imageline($im, 0, 960, 1000, 960, $black);
    imageline($im, 0, 760, 1000, 760, $black);
    imageline($im, 0, 721, 1000, 721, $black);
 
    # Заливка верхней травы и асфальта по границам дороги и заднего плана # 
    imagefilltoborder($im, 0, 722, $black, $green);
    imagefilltoborder($im, 0, 761, $black, $asphalt);
 
    # Рисование разметки #
    for ($i = 0; $i < 4; $i++) { 
        imagefilledpolygon($im, $parallel, 4, $white);
        for ($j = 0; $j < 8; $j += 2) {
            $parallel[$j] += 280;
        }
    }
 
    # Рисование заднего плана #
    imagefilledpolygon($im, $buildings, 25, $gray);
 
    # Заливка нижней травы по границе дороги #
    imagefilltoborder($im, 0, 980, $black, $green);
 
    # Рисование фонарей #
    for ($i = 0; $i < 6; $i++) { 
        imagefilledpolygon($im, $fonar, 20, $blue);
        for ($j = 0; $j < 40; $j += 2) {
            $fonar[$j] += 168;
        }
    }   
 
    # Рисование камешков на траве снизу #
    for ($l = 0; $l < 1000; $l+=40) {
        imagefilledrectangle($im, 4 + $l, 960, 12 + $l, 964, $black);
        imagefilledrectangle($im, 4 + $l, 968, 8 + $l, 972, $yellow);
        imagefilledrectangle($im, 4 + $l, 992, 8 + $l, 996, $black);
        imagefilledrectangle($im, 12 + $l, 976, 16 + $l, 984, $blue);
        imagefilledrectangle($im, 16 + $l, 980, 20 + $l, 984, $blue);
        imagefilledrectangle($im, 24 + $l, 968, 32 + $l, 976, $black);
        imagefilledrectangle($im, 20 + $l, 988, 32 + $l, 992, $yellow);
    }
 
    # Рисование солнца #
    imagefilledarc($im, 840, 80, 120, 120, 0, 360, $yellow, IMG_ARC_PIE);
 
    ImagePng ($im);
?>