Beispiel #1
0
def bodem_query(x,y):
    bestandspad = DATA_ROOT
    x = str(x)
    y = str(y)
    bergingscoefficient = float(raster_q(bestandspad + "bergcoef-nzv.tif", x, y))
    drainweerstand = float(raster_q(bestandspad + "drainw-nzv.tif", x, y))
    qbot = float(raster_q(bestandspad + "kwel-nzv.tif", x, y))
    ontwateringsbasis = (float(raster_q(bestandspad + "ontwbas-nzv.tif", x, y))*-1.0)
    return bergingscoefficient, drainweerstand, qbot, ontwateringsbasis
Beispiel #2
0
    meteobestand_in = 'data/Waterbalans_METEO' + str(i) + '.csv'
    dfNettoNeerslag = pd.read_csv(meteobestand_in,
                                  header=None,
                                  skiprows=1,
                                  names=['datum', 'NN1', 'NN2'],
                                  delimiter=',',
                                  parse_dates=[0])
array_neerslagoverschot = dfNettoNeerslag['NN1'].values
lengte = len(
    array_neerslagoverschot
)  #arrays die je samen wilt gebruiken in een tijdserie moeten even lang zijn, anders gaat er van alles mis

print str(datetime.now()) + 'inlezen bodem'
#bodemdata afkomstig uit de rasters inlezen in een pandas dataframe en dan wegschrijven naar een numpy arrays
array_bergingscoefficient = np.array(
    [float(raster_q("/home/john/ftm/ftm/ftm/data/bergcoef-nzv.tif", x, y))])
array_drainweerstand = np.array(
    [float(raster_q("/home/john/ftm/ftm/ftm/data/drainw-nzv.tif", x, y))])
array_qbot = np.array(
    [float(raster_q("/home/john/ftm/ftm/ftm/data/kwel-nzv.tif", x, y))])
array_hgem = np.array([
    float(raster_q("/home/john/ftm/ftm/ftm/data/ontwbas-nzv.tif", x, y)) * -1.0
])
print array_bergingscoefficient
print array_drainweerstand
print array_qbot
print array_hgem

print str(datetime.now()) + 'array vullen met nullen'
#array grondwaterstand voorbereiden en vullen met nullen, zodoende begint de berekening altijd op 0 cm-mv en gaat python niet klagen over de positieaanduiding in een nog niet bestaande array
array_grondwaterstand = np.zeros(shape=(2, lengte), order='C')
Beispiel #3
0
if len(sys.argv) == 2:
    lijst_locaties = sys.argv[1]
else:
    print "gebruik, ", sys.argv[0], " lijst_locaties"

    
with open(lijst_locaties, 'r') as f:
    line = f.readline()
    while line:
        words = [w.strip() for w in line.split(',')]
        locaties.append(words[0])
        x_coords.append(words[1])
        y_coords.append(words[2])
        line = f.readline()
f.close()
    
print locaties, x_coords, y_coords

of = open("/home/john/Documenten/Afstuderen_Acacia_water/Data/Noorderzijlvest-gegevens/Noorderzijlvest/DINO/fysische_gegevens.txt", 'w')
of.write("Locatie, x_coord, y_coord, berg, drainw, kwel, ontw\n")

bestandspad = "/home/john/ftm/ftm/ftm/data/"
for i in range(0, len(locaties)-1):
    berg = raster_q(bestandspad + "bergcoef-nzv.tif", str(x_coords[i]), str(y_coords[i])).rstrip('\r\n')
    drainw = raster_q(bestandspad + "drainw-nzv.tif", str(x_coords[i]), str(y_coords[i])).rstrip('\r\n')
    kwel = raster_q(bestandspad + "kwel-nzv.tif", str(x_coords[i]), str(y_coords[i])).rstrip('\r\n')
    ontw = raster_q(bestandspad + "ontwbas-nzv.tif", str(x_coords[i]), str(y_coords[i])).rstrip('\r\n')
    of.write('%s, %s, %s, %s, %s, %s, %s\n' % (locaties[i], x_coords[i], y_coords[i], berg, drainw, kwel, ontw))
of.close()    

Beispiel #4
0
x= "6.5108"
y= "53.3847"

###################################################################
#hier begint dan het programma

#voorbewerkte meteo inlezen in een pandas dataframe en dan wegschrijven naar een numpy array
for i in [nummer_meteostation]:
    meteobestand_in = 'data/Waterbalans_METEO'+str(i)+'.csv'
    dfNettoNeerslag = pd.read_csv(meteobestand_in, header=None, skiprows=1, names = ['datum', 'NN1', 'NN2' ], delimiter =',', parse_dates=[0])
array_neerslagoverschot = dfNettoNeerslag['NN1'].values
lengte = len(array_neerslagoverschot) #arrays die je samen wilt gebruiken in een tijdserie moeten even lang zijn, anders gaat er van alles mis

print str(datetime.now()) + 'inlezen bodem'
#bodemdata afkomstig uit de rasters inlezen in een pandas dataframe en dan wegschrijven naar een numpy arrays
array_bergingscoefficient = np.array([float(raster_q("/home/john/ftm/ftm/ftm/data/bergcoef-nzv.tif", x, y))])
array_drainweerstand = np.array([float(raster_q("/home/john/ftm/ftm/ftm/data/drainw-nzv.tif", x, y))])
array_qbot = np.array([float(raster_q("/home/john/ftm/ftm/ftm/data/kwel-nzv.tif", x, y))])
array_hgem = np.array([float(raster_q("/home/john/ftm/ftm/ftm/data/ontwbas-nzv.tif", x, y))*-1.0])
print array_bergingscoefficient
print array_drainweerstand
print array_qbot
print array_hgem

print str(datetime.now()) + 'array vullen met nullen'
#array grondwaterstand voorbereiden en vullen met nullen, zodoende begint de berekening altijd op 0 cm-mv en gaat python niet klagen over de positieaanduiding in een nog niet bestaande array
array_grondwaterstand = np.zeros(shape = (2, lengte), order='C')
print str(datetime.now()) + 'beginnen met rekenen'
#door de functie gws_op_t uit het rekenhart aan te roepen en met behulp van een for loop uit te voeren wordt voor iedere dag de grondwaterstand berekend met de netto neerslag en de bodemdata, tegelijk wordt de oppervlakkige afstroming berekend, maar dit laatste is nog in ontwikkeling
for i in range(1,lengte):
    array_grondwaterstand[0,i] = gws_op_t(array_bergingscoefficient[0], array_drainweerstand[0], array_grondwaterstand[0, (i-1)], array_qbot[0], array_hgem[0], array_neerslagoverschot[i])[0]
Beispiel #5
0
def maak_plotje2(x2, y2, startdatum, einddatum, resultaat):
    pnt = Point(float(x2),float(y2),srid=4326)
    pnt.transform(28992)
    
    nummer_meteostation = NeerslagStation.closest(pnt).nummer
    naam_meteostation = NeerslagStation.closest(pnt).naam

    bestandspad= DATA_ROOT 
    
    x= str(x2)
    y= str(y2)
    
    startdatum = str(startdatum) #'2015-01-01'
    einddatum = str(einddatum)#'2015-11-08'

    ###################################################################
    #hier begint dan het programma
    datum=meteo_query(nummer_meteostation, startdatum, einddatum)[0]
    neerslag=meteo_query(nummer_meteostation, startdatum, einddatum)[1]
    verdamping=meteo_query(nummer_meteostation, startdatum, einddatum)[2]
    lengte = len(neerslag) #arrays die je samen wilt gebruiken in een tijdserie moeten even lang zijn, anders gaat er van alles mis
    array_neerslag1 = np.array(neerslag) 
    array_verdamping1 = np.array(verdamping) #np.zeros(shape = (1, lengte), order='C')
    datum_array = np.array(datum)
    array_neerslagoverschot = np.zeros(shape = (1, lengte), order='C')
    
    startdatum = datum_array[0]
    einddatum = datum_array[lengte-1]
    
    for i in range(0, lengte):
        array_neerslagoverschot[0][i] = int(array_neerslag1[i]) - int(array_verdamping1[i])
    

    #voorbewerkte meteo inlezen in een pandas dataframe en dan wegschrijven naar een numpy array
   

    #bodemdata afkomstig uit de QGIS puntenwolk inlezen in een pandas dataframe en dan wegschrijven naar een numpy arrays
    
    array_bergingscoefficient = np.array([float(raster_q(bestandspad + "bergcoef-nzv.tif", x, y))])
    array_drainweerstand = np.array([float(raster_q(bestandspad + "drainw-nzv.tif", x, y))])
    array_qbot = np.array([float(raster_q(bestandspad + "kwel-nzv.tif", x, y))])
    array_hgem = np.array([float(raster_q(bestandspad + "ontwbas-nzv.tif", x, y))*-1.0])


    #array grondwaterstand voorbereiden en vullen met nullen, zodoende begint de berekening altijd op 0 cm-mv en gaat python niet klagen over de positieaanduiding in een nog niet bestaande array
    array_grondwaterstand = np.zeros(shape = (2, lengte), order='C')
    
    #door de functie gws_op_t uit het rekenhart aan te roepen en met behulp van een for loop uit te voeren wordt voor iedere dag de grondwaterstand berekend met de netto neerslag en de bodemdata, tegelijk wordt de oppervlakkige afstroming berekend, maar dit laatste is nog in ontwikkeling
    for i in range(1,lengte):
        array_grondwaterstand[0,i] = gws_op_t(array_bergingscoefficient[0], array_drainweerstand[0], array_grondwaterstand[0, (i-1)], array_qbot[0], array_hgem[0], array_neerslagoverschot[0][i])[0]
        array_grondwaterstand[1,i] = gws_op_t(array_bergingscoefficient[0], array_drainweerstand[0], array_grondwaterstand[0, (i-1)], array_qbot[0], array_hgem[0], array_neerslagoverschot[0][i])[1]

    
    ###################################################################
    #hieronder wordt het outputbestand met de grondwaterstanden en de oppervlakkige afstroming gemaakt

    #startdatum en dates zijn variabelen die in het verloop van het programma gebruikt worden om een array of serie om te kunnen zetten naar een dataframe met datums
    #startdatum = dfNettoNeerslag.ix[0, 'datum']
    dates = datum_array #pd.date_range(startdatum, periods=lengte)
    
    #dfGWS en serafstroming worden met behulp van pd.Series omgezet in een tijdserie waarbij de grondwaterstanden en afstroming een datum hebben
    dfGWS = pd.Series(array_grondwaterstand[0], index=dates)
    serafstroming = pd.Series(array_grondwaterstand[1], index=dates)
    
    #de net gemaakte tijdseries worden omgezet in een dataframe, dat is gemakkelijker met pandas te hanteren voor wegschrijven naar csv en plotten
    dfGrondwaterstanden = dfGWS.to_frame(name = 'Grondwaterstanden')
    dfAfstroming = serafstroming.to_frame(name = 'Afstroming')
    #het grondwaterframe en het afstromingsframe worden samengevoegd tot een dataframe, waardoor beide series in een csv-bestand weggezet kunnen worden

    dfOutput = pd.merge(dfGrondwaterstanden, dfAfstroming,how='inner', on=None, left_on=None, right_on=None, left_index=True, right_index=True)
    #variabele bestandsnaam voor het grondwaterstandenbestand, deze is afhankelijk van het meteostationsnummer om bij verschillende tijdseries niet over de vorige heen te schrijven
    

    #met behulp van de module GxG.py worden de GHG en GLG berekend en voor het plotten in een dataframe met datums gestopt, anders kan er geen horizontale lijn voor een getal geplot worden
    GHG = GHG_berekening(dfGWS, dates, lengte)[0]
    GLG = GLG_berekening(dfGWS, dates, lengte)[0]
    GVG = GVG_berekening(dfGWS, dates, lengte)[0]
    dfGHGs = GHG_berekening(dfGWS, dates, lengte)[1]
    dfGLGs = GLG_berekening(dfGWS, dates, lengte)[1]
    dfGVGs = GVG_berekening(dfGWS, dates, lengte)[1]
    
    gt = GT(GHG[0],GLG[0])[1]

    ###################################################################
    #plotje maken van de grondwaterstanden en opslaan
    if resultaat == 'plot':
        return plot_buf(dfGWS, dfGHGs, dfGLGs, gt, nummer_meteostation, x2, y2), gt, int(GHG[0]),int(GLG[0]), int(GVG), startdatum.date(), einddatum.date(), array_bergingscoefficient[0], array_drainweerstand[0], array_qbot[0], array_hgem[0], nummer_meteostation, naam_meteostation  
    elif resultaat == 'csv':
        return dfGrondwaterstanden, startdatum, einddatum
Beispiel #6
0
def maak_plotje2(x2, y2, startdatum, einddatum, resultaat):
    pnt = Point(float(x2), float(y2), srid=4326)
    pnt.transform(28992)

    nummer_meteostation = NeerslagStation.closest(pnt).nummer
    naam_meteostation = NeerslagStation.closest(pnt).naam

    bestandspad = DATA_ROOT

    x = str(x2)
    y = str(y2)

    startdatum = str(startdatum)  #'2015-01-01'
    einddatum = str(einddatum)  #'2015-11-08'

    ###################################################################
    #hier begint dan het programma
    datum = meteo_query(nummer_meteostation, startdatum, einddatum)[0]
    neerslag = meteo_query(nummer_meteostation, startdatum, einddatum)[1]
    verdamping = meteo_query(nummer_meteostation, startdatum, einddatum)[2]
    lengte = len(
        neerslag
    )  #arrays die je samen wilt gebruiken in een tijdserie moeten even lang zijn, anders gaat er van alles mis
    array_neerslag1 = np.array(neerslag)
    array_verdamping1 = np.array(
        verdamping)  #np.zeros(shape = (1, lengte), order='C')
    datum_array = np.array(datum)
    array_neerslagoverschot = np.zeros(shape=(1, lengte), order='C')

    startdatum = datum_array[0]
    einddatum = datum_array[lengte - 1]

    for i in range(0, lengte):
        array_neerslagoverschot[0][i] = int(array_neerslag1[i]) - int(
            array_verdamping1[i])

    #voorbewerkte meteo inlezen in een pandas dataframe en dan wegschrijven naar een numpy array

    #bodemdata afkomstig uit de QGIS puntenwolk inlezen in een pandas dataframe en dan wegschrijven naar een numpy arrays

    array_bergingscoefficient = np.array(
        [float(raster_q(bestandspad + "bergcoef-nzv.tif", x, y))])
    array_drainweerstand = np.array(
        [float(raster_q(bestandspad + "drainw-nzv.tif", x, y))])
    array_qbot = np.array(
        [float(raster_q(bestandspad + "kwel-nzv.tif", x, y))])
    array_hgem = np.array(
        [float(raster_q(bestandspad + "ontwbas-nzv.tif", x, y)) * -1.0])

    #array grondwaterstand voorbereiden en vullen met nullen, zodoende begint de berekening altijd op 0 cm-mv en gaat python niet klagen over de positieaanduiding in een nog niet bestaande array
    array_grondwaterstand = np.zeros(shape=(2, lengte), order='C')

    #door de functie gws_op_t uit het rekenhart aan te roepen en met behulp van een for loop uit te voeren wordt voor iedere dag de grondwaterstand berekend met de netto neerslag en de bodemdata, tegelijk wordt de oppervlakkige afstroming berekend, maar dit laatste is nog in ontwikkeling
    for i in range(1, lengte):
        array_grondwaterstand[0,
                              i] = gws_op_t(array_bergingscoefficient[0],
                                            array_drainweerstand[0],
                                            array_grondwaterstand[0, (i - 1)],
                                            array_qbot[0], array_hgem[0],
                                            array_neerslagoverschot[0][i])[0]
        array_grondwaterstand[1,
                              i] = gws_op_t(array_bergingscoefficient[0],
                                            array_drainweerstand[0],
                                            array_grondwaterstand[0, (i - 1)],
                                            array_qbot[0], array_hgem[0],
                                            array_neerslagoverschot[0][i])[1]

    ###################################################################
    #hieronder wordt het outputbestand met de grondwaterstanden en de oppervlakkige afstroming gemaakt

    #startdatum en dates zijn variabelen die in het verloop van het programma gebruikt worden om een array of serie om te kunnen zetten naar een dataframe met datums
    #startdatum = dfNettoNeerslag.ix[0, 'datum']
    dates = datum_array  #pd.date_range(startdatum, periods=lengte)

    #dfGWS en serafstroming worden met behulp van pd.Series omgezet in een tijdserie waarbij de grondwaterstanden en afstroming een datum hebben
    dfGWS = pd.Series(array_grondwaterstand[0], index=dates)
    serafstroming = pd.Series(array_grondwaterstand[1], index=dates)

    #de net gemaakte tijdseries worden omgezet in een dataframe, dat is gemakkelijker met pandas te hanteren voor wegschrijven naar csv en plotten
    dfGrondwaterstanden = dfGWS.to_frame(name='Grondwaterstanden')
    dfAfstroming = serafstroming.to_frame(name='Afstroming')
    #het grondwaterframe en het afstromingsframe worden samengevoegd tot een dataframe, waardoor beide series in een csv-bestand weggezet kunnen worden

    dfOutput = pd.merge(dfGrondwaterstanden,
                        dfAfstroming,
                        how='inner',
                        on=None,
                        left_on=None,
                        right_on=None,
                        left_index=True,
                        right_index=True)
    #variabele bestandsnaam voor het grondwaterstandenbestand, deze is afhankelijk van het meteostationsnummer om bij verschillende tijdseries niet over de vorige heen te schrijven

    #met behulp van de module GxG.py worden de GHG en GLG berekend en voor het plotten in een dataframe met datums gestopt, anders kan er geen horizontale lijn voor een getal geplot worden
    GHG = GHG_berekening(dfGWS, dates, lengte)[0]
    GLG = GLG_berekening(dfGWS, dates, lengte)[0]
    GVG = GVG_berekening(dfGWS, dates, lengte)[0]
    dfGHGs = GHG_berekening(dfGWS, dates, lengte)[1]
    dfGLGs = GLG_berekening(dfGWS, dates, lengte)[1]
    dfGVGs = GVG_berekening(dfGWS, dates, lengte)[1]

    gt = GT(GHG[0], GLG[0])[1]

    ###################################################################
    #plotje maken van de grondwaterstanden en opslaan
    if resultaat == 'plot':
        return plot_buf(
            dfGWS, dfGHGs, dfGLGs, gt, nummer_meteostation, x2,
            y2), gt, int(GHG[0]), int(GLG[0]), int(GVG), startdatum.date(
            ), einddatum.date(), array_bergingscoefficient[
                0], array_drainweerstand[0], array_qbot[0], array_hgem[
                    0], nummer_meteostation, naam_meteostation
    elif resultaat == 'csv':
        return dfGrondwaterstanden, startdatum, einddatum
Beispiel #7
0
with open(lijst_locaties, 'r') as f:
    line = f.readline()
    while line:
        words = [w.strip() for w in line.split(',')]
        locaties.append(words[0])
        x_coords.append(words[1])
        y_coords.append(words[2])
        line = f.readline()
f.close()

print locaties, x_coords, y_coords

of = open(
    "/home/john/Documenten/Afstuderen_Acacia_water/Data/Noorderzijlvest-gegevens/Noorderzijlvest/DINO/fysische_gegevens.txt",
    'w')
of.write("Locatie, x_coord, y_coord, berg, drainw, kwel, ontw\n")

bestandspad = "/home/john/ftm/ftm/ftm/data/"
for i in range(0, len(locaties) - 1):
    berg = raster_q(bestandspad + "bergcoef-nzv.tif", str(x_coords[i]),
                    str(y_coords[i])).rstrip('\r\n')
    drainw = raster_q(bestandspad + "drainw-nzv.tif", str(x_coords[i]),
                      str(y_coords[i])).rstrip('\r\n')
    kwel = raster_q(bestandspad + "kwel-nzv.tif", str(x_coords[i]),
                    str(y_coords[i])).rstrip('\r\n')
    ontw = raster_q(bestandspad + "ontwbas-nzv.tif", str(x_coords[i]),
                    str(y_coords[i])).rstrip('\r\n')
    of.write('%s, %s, %s, %s, %s, %s, %s\n' %
             (locaties[i], x_coords[i], y_coords[i], berg, drainw, kwel, ontw))
of.close()