Nimm einen druckempfindlichen Sensor um festzustellen, wann er auf der Oberfläche aufsitzt. Z.B. einen Nagel in einem Röhrchen, mit einer Lichtschranke um festzustellen, wann sich der Nagel bei Kontakt mit der Oberfläche ins Rohr hineinschiebt. Oder ein verschiebbares Röhrchen um einen Stab. Dann kannst Du schnell hinunterfahren bis der Sensor aufsitzt, dann bremsen und langsam zurück, um die genaue Höhe zu ermitteln.
Beim Brunnenlot kannst Du Probleme mit Blättern, Blüten etc. auf der Wasseroberfläche bekommen, da dürfte dann maximal 1 mm Genauigkeit drin sein. Beim Schnee kommt es drauf an, wie leicht sich die Schneedecke eindrücken läßt. Da sie nicht wieder zurückfließt, dürfte die Messung jedesmal einen kleineren Wert liefern, bis der Schnee kompakt genug zusammengedrückt ist.
Vermutlich ist ein Ultraschall Sensor die beste Wahl (berührungslos), nur mit ziemlich schlechter Auflösung.